python读写修改Excel之xlrd&xlwt&xlutils
py读写修改常用的三种方法
- xlwt:用于写入Excel文件
- xlrd:用于读取Excel文件
- xlutils:用于操作Excel文件的实用工具,比如复制、分割、筛选等
0、安装模块
pip3installxlrdxlwtxlutils
1.写入excel
git:https://github.com/python-excel/xlwt/tree/master/examples
实现效果
上代码
fromdatetimeimportdatetime importxlwt font0=xlwt.Font() #font0.name='TimesNewRoman'#适用于字母或数字 font0.name='宋体'#适用于中文,适配字体或者不指定字体才能体现出指定的颜色 #font0.colour_index=1#白色 #font0.colour_index=2#红色 #font0.colour_index=3#绿色 #font0.colour_index=4#蓝色 #font0.colour_index=5#黄色 #font0.colour_index=6#紫色 #font0.colour_index=7#青色 #font0.colour_index=8#黑色,比默认加黑,不加粗 font0.colour_index=4#蓝色 font0.bold=True style0=xlwt.XFStyle() style0.font=font0 #创建样式对象:日期格式 style1=xlwt.XFStyle() style1.num_format_str='YYYY-MM-DD' #创建样式对象:字体居中对齐 style2=xlwt.XFStyle() al=xlwt.Alignment() al.horz=0x02#设置水平居中 al.vert=0x01#设置垂直居中 style2.alignment=al #创建样式对象,设置日期格式与字体居中对齐 style3=xlwt.XFStyle() style3.num_format_str='YYYY-MM-DD' style3.alignment=al #创建样式对象,设置字体居中且设置字体颜色 style4=xlwt.XFStyle() style4.alignment=al style4.font=font0 now_time=datetime.now().strftime('%Y-%m-%d%X') date_time=datetime.now().strftime('%Y-%m-%d') #创建表格 wb=xlwt.Workbook() #新建一个名为ScoreSheet的表单页 score_sheet=wb.add_sheet('ScoreSheet') #新建一个名为RecordTestSheet的表单页 record_test_sheet=wb.add_sheet('RecordTestSheet') #1、写入ScoreSheet表单 #设置表头,第一个参数是行,第二个参数是列 score_sheet.write(0,0,'时间',style2) score_sheet.write(0,1,'班级',style2) score_sheet.write(0,2,'姓名',style2) score_sheet.write(0,3,'语文',style2) score_sheet.write(0,4,'数学',style2) score_sheet.write(0,5,'英语',style2) score_sheet.write(0,6,'理综',style2) score_sheet.write(0,7,'总分',style4) #按照位置添加数据 score_sheet.write(1,0,datetime.now(),style3) score_sheet.write(1,1,'高三三班',style2) score_sheet.write(1,2,'桑岩',style2) score_sheet.write(1,3,132,style2) score_sheet.write(1,4,150,style2) score_sheet.write(1,5,140,style2) score_sheet.write(1,6,290,style2) score_sheet.write(1,7,xlwt.Formula("D2+E2+F2+G2"),style2) score_sheet.write(2,0,datetime.now(),style3) score_sheet.write(2,1,'高三三班',style2) score_sheet.write(2,2,'项天骐',style2) score_sheet.write(2,3,140,style2) score_sheet.write(2,4,150,style2) score_sheet.write(2,5,132,style2) score_sheet.write(2,6,280,style2) score_sheet.write(2,7,xlwt.Formula("D3+E3+F3+G3"),style2) score_sheet.write(3,0,datetime.now(),style3) score_sheet.write(3,1,'高三三班',style2) score_sheet.write(3,2,'向淮南',style2) score_sheet.write(3,3,135,style2) score_sheet.write(3,4,150,style2) score_sheet.write(3,5,145,style2) score_sheet.write(3,6,270,style2) score_sheet.write(3,7,xlwt.Formula("D4+E4+F4+G4"),style2) #2、写入RecordTestSheet表单 record_test_sheet.write(0,0,'时间') record_test_sheet.write(0,1,'学科',style1) record_test_sheet.write(0,2,'成绩',style1) record_test_sheet.write(1,0,datetime.now(),style1) record_test_sheet.write(1,1,'语文',style2) record_test_sheet.write(1,2,80) record_test_sheet.write(2,0,datetime.now(),style3) record_test_sheet.write(2,1,'数学',style2) record_test_sheet.write(2,2,99) record_test_sheet.write(3,0,now_time,style2) record_test_sheet.write(3,1,'英语',style2) record_test_sheet.write(3,2,98) #保存表格,这里应该是覆盖写,注意每次都是覆盖所有表单内容,建议每次生成的表单加上时间版本区分 #wb.save('example.xls') wb.save('example-{0}.xls'.format(date_time))
2、读Excel
git:https://github.com/python-excel/xlrd
实现效果,读取sheet表单内容
数值 | 类型 | 说明 |
---|---|---|
0 | empty | 空 |
1 | string | 字符串 |
2 | number | 数字 |
3 | date | 日期 |
4 | boole | 布尔值 |
5 | error | 错误 |
代码
importxlrd #打开xls文件 wb=xlrd.open_workbook("example-2021-03-09.xls") #获取并打印sheet数量 print("sheet数量:",wb.nsheets)#sheet数量:2 #获取并打印sheet名称 print("sheet名称:",wb.sheet_names())#sheet名称:['ScoreSheet','RecordTestSheet'] #根据sheet索引获取内容 sh1=wb.sheet_by_index(0) #或者 #也可根据sheet名称获取内容 #sh=wb.sheet_by_name('ScoreSheet') #获取并打印该sheet行数和列数 print(u"sheet:%s表单共%d行%d列"%(sh1.name,sh1.nrows,sh1.ncols))#sheet:ScoreSheet表单共4行8列 #获取并打印某个单元格的值 print("第一行第二列的值为:",sh1.cell_value(0,1))#第一行第二列的值为:班级 #获取整行或整列的值 row_info=sh1.row_values(0)#获取第一行内容 col_info=sh1.col_values(1)#获取第二列内容 #打印获取的行列值 print("第一行的值为:",row_info)#第一行的值为:['时间','班级','姓名','语文','数学','英语','理综','总分'] print("第二列的值为:",col_info)#第二列的值为:['班级','高三三班','高三三班','高三三班'] #获取单元格内容的数据类型,注意这里的值另有含义 print("第二行第一列的【值类型】为:",sh1.cell(1,0).ctype)#第二行第一列的【值类型】为:3 #遍历所有表单内容 forshinwb.sheets(): forrinrange(sh.nrows): #输出指定行内容,这里包含原有类型指定,不能直接获取到指定列的值 row_val_list=sh.row(r) print(row_val_list) #[text:'时间',text:'班级',text:'姓名',text:'语文',text:'数学',text:'英语',text:'理综',text:'总分'] #遍历行内,输出当前行内的所有列值 col_val_list=[col_val.valueforcol_valinrow_val_list] print(col_val_list)
3、修改Excel
修改Excel是通过xlutils库的copy方法将原来的Excel整个复制一份,然后再做修改操作,最后再保存
修改前
修改后
上代码
importxlrd fromxlutils.copyimportcopy #打开excel文件,带格式复制 read_book=xlrd.open_workbook("example-2021-03-09.xls",formatting_info=True) #复制一份 wb=copy(read_book) #选取第一个表单 sh1=wb.get_sheet(0) #在第五行新增写入数据 sh1.write(4,0,'2020-12-16') sh1.write(4,1,'高三三班') sh1.write(4,2,'小鱼仙倌儿') sh1.write(4,3,150) sh1.write(4,4,150) sh1.write(4,5,150) sh1.write(4,6,300) #选取第二个表单 sh2=wb.get_sheet(1) #替换总成绩数据 sh2.write(1,2,100) #保存 wb.save('example-2021-03-09.xls')
注意,复制xls这里有格式问题
似乎没有任何简单的方法可以保留单元格的格式;它总是被吹走并设置为空白。
https://www.coder.work/article/80896
https://zhuanlan.zhihu.com/p/128674458
附录
参考:http://www.ityouknow.com/python/2019/12/29/python-excel-103.html
官网:http://www.python-excel.org/
到此这篇关于python读写修改Excel之xlrd&xlwt&xlutils的文章就介绍到这了,更多相关python读写修改Excel内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。