一、xlrd、xlwt、xlutils区别
xlrd 可以在任意平台上读取的excel为: .xls以及 .xlsx 。
xlwt支持excel版本: Microsoft excel版本 95---2003,也就是 xls文件。
若在xlrd与xlwt之间进行交互,如拷贝 xlrd 到 xlwt 需要用到xlutils,xlutils提供 copy、display、filter、margins、Save、styles等函数。
二、xlrd使用
1.打开Excel文件
data = xlrd.open_workbook('excelFile.xls')
2.读取所有工作表
workbook = xlrd.open_workbook('excelFile.xls')
workbook.sheet_names()
3.获取一个工作表,共有3种方式:
table = data.sheets()[0] #通过索引顺序获取
table = data.sheet_by_index(0) #通过索引顺序获取
table = data.sheet_by_name(u'Sheet1')#通过名称获取
4.获取整行和整列的值(数组)
table.row_values(i)
table.col_values(i)
5.获取行数和列数
nrows = table.nrows
ncols = table.ncols
6.循环行列表数据
for i in range(nrows ):
print table.row_values(i)
7.读取单元格
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
8.判断单元格数据类型
ctype=table.cell(i,j).ctype
类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
9.使用行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
10.简单的写入
import xlrd
data = xlrd.open_workbook('excelFile.xls')
table = data.sheet_by_name(u'Sheet1')#通过名称获取
row = 0
col = 0
# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
ctype = 1
value = '单元格的值'
xf = 0 # 扩展的格式化
table.put_cell(row, col, ctype, value, xf)
table.cell(0,0) #单元格的值'
table.cell(0,0).value #单元格的值'
11.获取sheet名字
import xlrd
xlsfile = r'D:\AutoPlan\apisnew.xls'
book = xlrd.open_workbook(xlsfile)
#获取sheet对象,方法有2种:
sheet_name=book.sheet_names()[0]
#获得指定索引的sheet名字
print sheet_name
sheet1=book.sheet_by_name(sheet_name)
#通过sheet索引获得sheet对象
sheet0=book.sheet_by_index(0)
三、读取excel单元格日期数据
1.使用xldate_as_datetime函数
将excel中的日期数据转换为yyyy/mm/dd格式
import xlrd
data = xlrd.open_workbook('E:/python/project/ab123.xlsx')
table = data.sheet_by_name(u'chinese') #通过名称获取表
nrows = table.nrows #数据行数
ncols = table.ncols
for i in range(1,nrows ): #跳过第1行表头
data=list(table.row_values(i))
for j in range(0,ncols):
type=table.cell(i,j).ctype
if type==3 :
t1=xlrd.xldate.xldate_as_datetime(table.cell(i,j).value,0)
data[j]=t1.strftime('%Y/%m/%d')
print(data)
结果:
['小文', 88.0, '1990/02/22']
['小明', 86.0, '2016/07/09']
['小红', 99.0, 20160908.0]
3.使用xldate_as_tuple函数
将excel中的日期数据转换为yyyy/mm/dd格式
import xlrd
data = xlrd.open_workbook('E:/python/project/ab123.xlsx')
table = data.sheet_by_name(u'chinese') #通过名称获取表
nrows = table.nrows #数据行数
ncols = table.ncols
for i in range(1,nrows ): #跳过第1行表头
data=list(table.row_values(i))
for j in range(0,ncols):
type=table.cell(i,j).ctype
if type==3 :
t1=xlrd.xldate.xldate_as_tuple(table.cell(i,j).value,0)
data[j]=str(t1[0])+'/'+str(t1[1])+'/'+str(t1[2])
print(data)
#结果:
['小文', 88.0, '1990/2/22']
['小明', 86.0, '2016/7/9']
['小红', 99.0, 20160908.0]