一、xlrd模块
xlrd为python第三方模块,用来读取excel表格数据。
安装:pip install xlrd
导入:import xlrd
# -*- coding:utf-8 -*- import xlrd filename = "E:\untitled3\test.xlsx" data = xlrd.open_workbook(filename)
说明:
运行python文件报SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: tr,原因:python字符串中有转义的含义,目前有3个解决方案:
1、在路径前面加r,即保持字符原始值的意思。
data = xlrd.open_workbook( r"E:untitled3 est.xlsx")
2、替换为双反斜杠
data = xlrd.open_workbook( "E:\untitled3\test.xlsx")
3、替换为正斜杠
data = xlrd.open_workbook( "E:/untitled3/test.xlsx")
初始运行报错xlrd.biffh.XLRDError: Excel xlsx file; not supported,原因是最近xlrd更新到了2.0.1版本,只支持.xls文件,不支持xlsx
安装旧版xlrd,在cmd中运行:
pip uninstall xlrd
pip install xlrd==1.2.0
安装后运行正确
1.xlrd常用函数
data = xlrd.open_workbook( "E:/untitled3/test.xlsx")
print(data.sheets())#获取全部sheet
print(data.sheets()[0])#获取全部sheet
print(data.sheet_by_index(0))#获取索引0的sheet
print(data.sheet_by_name("设备需求"))#获取sheet名为“设备需求”的sheet,区分大小写
print(data.sheet_names())#获取全部sheet的名字
print(data.sheet_loaded(0))#sheet索引为0的是否加载
print(data.nsheets)#获取sheet的数量
print(data.unload_sheet(0))#sheet索引为0的取消加载
2.xlrd读取excel行列
sheet1=data.sheet_by_index(0)#获取索引0的sheet print(sheet1.name)#获取sheet1的名字 print(sheet1.ncols)#获取sheet1的有效行数 print(sheet1.ncols)#获取sheet1的有效列数 print(sheet1.row(1))#返回该行单元格所组成的列表 print(sheet1.col(1))#返回该列单元格所组成的列表 print(sheet1.row_types(2))#返回该行单元格的数据类型,0为空,1表示String,2表示number,3表示日期 print(sheet1.row(2)[1])#返回该行第2个单元格对象 print(sheet1.row(2)[1].value)#返回该行第2个单元格对象的值 print(sheet1.row_values(1))#返回该行所有单元格对象的值 print(sheet1.row_len(1))#返回该行单元格的个数
3.xlrd读取excel单元格
print(sheet1.cell(1,1))#获取单元格对象 print(sheet1.cell_type(1,1))#获取单元格数据类型 print(sheet1.cell(1,1).ctype)#获取单元格数据类型 print(sheet1.cell(1,1).value)#获取单元格值 print(sheet1.cell_value(1,1))#获取单元格值
二、xlwt模块
xlrd为python第三方模块,用来写入excel表格数据。只支持xls格式,不支持xlsx格式。
安装:pip install xlwt
导入:import xlwt
1.创建工作簿——2.创建工作表——3.写入工作表数据
import xlwt
#1创建工作簿 xl=xlwt.Workbook() #2创建工作表 ws=xl.add_sheet("2010年度账单") #合并单元格1-2行,1-6列 ws.write_merge(0,1,0,5,"2010年度账单") data=(("Eqptype Model","68","Hynix","IT","新购","总计"), ("Backside", "xp","", ,"", 2, 2) ) #3for循环写入数据 for i,item in enumerate(data): for j,val in enumerate(item): ws.write(i+2,j,val) #导入图片 wsimage=xl.add_sheet("wsimage") wsimage.insert_bitmap("11.bmp",0,0) xl.save("E:\untitled3\2010年度账单.xls")