Python玩转Excel的读写改实例
摘要:
- 利用xlrd读取excel
- 利用xlwt写excel
- 利用xlutils修改excel
利用xlrd读取excel
先需要在命令行中pipinstallxlrd;读取xls文件的流程为:
加载文件->选中第几个表格->按先行后列的顺序读
通用demo
importxlrd filename="test.xls"#文件路径 wb=xlrd.open_workbook(filename)#加载这个xls文件 sh=wb.sheet_by_index(0)#选中第1个表格 rows=sh.nrows#rows为该表格的行数 foriinrange(1,rows):#从第二行开始按行读取 title=sh.cell(i,0).value#取第i+1行,第1列的数据
diy功能
根据列名获取内容的函数 defget_col_index(name,workbook,sheet): foriinrange(sheet.ncols): name2=sheet.cell(0,i).value print(name2) ifname2==name: returni return-1 sheet.cell(1,get_col_index("创建时间")).value
再拓展一点:
sh=wb.sheet_by_name(sheetname)#通过表格名称选中表格 print(wb.sheet_names())#打印该xls文件的所有表格名称 sh.row(i)#获得第i+1行的所有数据组成的list ncols=sh.ncols#获得该表格的所有列数 sh.row_values(rowx,start_colx=0,end_colx=None)#获取第rowx+1行的某几列的数据并组成的list sh.col(colx,start_rowx=0,end_rowx=None)#获取第colx+1列的某几行的数据并组成的list sh.cell(i,j).value#获取第i+1行第j+1列的数据 sh.cell(i,j).ctype#获取第i+1行第j+1列的数据类型
注意date类型
说起数据类型,补充一点,xlrd读取xls文件单元格的数据类型有五种,数字与类型的对应关系为:
ctype:0empty,1string,2number,3date,4boolean,5error
当单元格某个值为date类型时,不加处理输出的是一个浮点数,此时需要判断ctype并进行一次转换:
fromxlrdimportxldate_as_tuple cell=sh.cell(i,10).ctype ifcell.ctype==3: date=datetime(*xldate_as_tuple(cell.value,0))
利用xlwt写exce
先需要在命令行中pipinstallxlwt;写xls文件的流程为:
加载文件->选中第几个表格->按先行后列的顺序读
通用demo
importxlwt file=xlwt.Workbook()#新建个文件 sheet=file.add_sheet('test_sheet0',cell_overwrite_ok=True)#新建个表格,指定表名以及是否可覆盖写 sheet.write(i,j,value)#在第i+1行和第j+1列写value(i、j从0开始) file.save("test_xls.xls")#保存成xls文件并指定文件名
更多功能
#设置某列的宽度 sheet.col(0).width=200 #写日期 style=xlwt.XFStyle() style.num_format_str='D-MMM-YY' worksheet.write(0,0,datetime.datetime.now(),style) #写公式 sheet.write(1,1,xlwt.Formula('SUM(A1,B1)')) #合并单元格的写 sheet.write_merge(0,0,0,3,'FirstMerge') #ps: #write_merge(x,x+h,y,w+y,value,sytle)x和y表示当前行列,h和w为要合并的行数和列数
更炫酷一点
既然是写,何不来点style:
style=xlwt.XFStyle() #修改字体: font=xlwt.Font()#为样式创建字体 font.name='TimesNewRoman'#字体名称 font.bold=True#黑体 font.colour_index=2#修改字的颜色 font.underline=True#下划线 style.font=font#使用到样式中 sheet.write(0,1,"编号",style) #修改单元格背景色 pattern=xlwt.Pattern() pattern.pattern=xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour=5#色号,可以在源代码中看到色号和颜色的对应关系 style=xlwt.XFStyle() style.pattern=pattern sheet.write(0,2,"编号",style)
利用xlutils修改excel
修改excel文件的流程为:
将xlrd加载的xls文件(xlrd对象)复制为xlwt对象,然后用xlwt对象操作excel
demo
importxlrd importpymysql fromxlrdimportopen_workbook fromxlutils.copyimportcopy importxlwt file_name="test_update.xls" workbook=xlrd.open_workbook(file_name) sheet=wb.sheet_by_index(0) workbook_update=copy(workbook) sheet_update=workbook_update.get_sheet(0) sheet_update.write(i,j,value) workbook_update.save(file_name)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接