python读写修改Excel之xlrdxlwtxlutils
py读写修改常⽤的三种⽅法
xlwt:⽤于写⼊Excel⽂件
xlrd:⽤于读取Excel⽂件
xlutils:⽤于操作Excel⽂件的实⽤⼯具,⽐如复制、分割、筛选等
0、安装模块
pip3installxlrdxlwtxlutils
1.写⼊excel
实现效果
上代码
fromdatetimeimportdatetime
importxlwt
font0=()
#='TimesNewRoman'#适⽤于字母或数字
='宋体'#适⽤于中⽂,适配字体或者不指定字体才能体现出指定的颜⾊
#_index=1#⽩⾊
#_index=2#红⾊
#_index=3#绿⾊
#_index=4#蓝⾊
#_index=5#黄⾊
#_index=6#紫⾊
#_index=7#青⾊
#_index=8#⿊⾊,⽐默认加⿊,不加粗
_index=4#蓝⾊
=True
style0=e()
=font0
#创建样式对象:⽇期格式
style1=e()
_format_str='YYYY-MM-DD'
#创建样式对象:字体居中对齐
style2=e()
al=ent()
=0x02#设置⽔平居中
=0x01#设置垂直居中
ent=al
#创建样式对象,设置⽇期格式与字体居中对齐
style3=e()
_format_str='YYYY-MM-DD'
ent=al
#创建样式对象,设置字体居中且设置字体颜⾊
style4=e()
ent=al
=font0
now_time=().strftime('%Y-%m-%d%X')
date_time=().strftime('%Y-%m-%d')
#创建表格
wb=ok()
#新建⼀个名为ScoreSheet的表单页
score_sheet=_sheet('ScoreSheet')
#新建⼀个名为RecordTestSheet的表单页
record_test_sheet=_sheet('RecordTestSheet')
#1、写⼊ScoreSheet表单
#设置表头,第⼀个参数是⾏,第⼆个参数是列
score_(0,0,'时间',style2)
score_(0,1,'班级',style2)
score_(0,2,'姓名',style2)
score_(0,3,'语⽂',style2)
score_(0,4,'数学',style2)
score_(0,5,'英语',style2)
score_(0,6,'理综',style2)
score_(0,7,'总分',style4)
#按照位置添加数据
score_(1,0,(),style3)
score_(1,1,'⾼三三班',style2)
score_(1,2,'桑岩',style2)
score_(1,3,132,style2)
score_(1,4,150,style2)
score_(1,5,140,style2)
score_(1,6,290,style2)
score_(1,7,a("D2+E2+F2+G2"),style2)
score_(2,0,(),style3)
score_(2,1,'⾼三三班',style2)
score_(2,2,'项天骐',style2)
score_(2,3,140,style2)
score_(2,4,150,style2)
score_(2,5,132,style2)
score_(2,6,280,style2)
score_(2,7,a("D3+E3+F3+G3"),style2)
score_(3,0,(),style3)
score_(3,1,'⾼三三班',style2)
score_(3,2,'向淮南',style2)
score_(3,3,135,style2)
score_(3,4,150,style2)
score_(3,5,145,style2)
score_(3,6,270,style2)
score_(3,7,a("D4+E4+F4+G4"),style2)
#2、写⼊RecordTestSheet表单
record_test_(0,0,'时间')
record_test_(0,1,'学科',style1)
record_test_(0,2,'成绩',style1)
record_test_(1,0,(),style1)
record_test_(1,1,'语⽂',style2)
record_test_(1,2,80)
record_test_(2,0,(),style3)
record_test_(2,1,'数学',style2)
record_test_(2,2,99)
record_test_(3,0,now_time,style2)
record_test_(3,1,'英语',style2)
record_test_(3,2,98)
#保存表格,这⾥应该是覆盖写,注意每次都是覆盖所有表单内容,建议每次⽣成的表单加上时间版本区分
#('')
('example-{0}.xls'.format(date_time))
2、读Excel
实现效果,读取sheet表单内容
数值类型说明
0empty空
1string字符串
2number数字
3date⽇期
4boole布尔值
5error错误
代码
importxlrd
#打开xls⽂件
wb=_workbook("")
#获取并打印sheet数量
print("sheet数量:",s)#sheet数量:2
#获取并打印sheet名称
print("sheet名称:",_names())#sheet名称:['ScoreSheet','RecordTestSheet']
#根据sheet索引获取内容
sh1=_by_index(0)
#或者
#也可根据sheet名称获取内容
#sh=_by_name('ScoreSheet')
#获取并打印该sheet⾏数和列数
print(u"sheet:%s表单共%d⾏%d列"%(,,))#sheet:ScoreSheet表单共4⾏8列
#获取并打印某个单元格的值
print("第⼀⾏第⼆列的值为:",_value(0,1))#第⼀⾏第⼆列的值为:班级
#获取整⾏或整列的值
row_info=_values(0)#获取第⼀⾏内容
col_info=_values(1)#获取第⼆列内容
#打印获取的⾏列值
print("第⼀⾏的值为:",row_info)#第⼀⾏的值为:['时间','班级','姓名','语⽂','数学','英语','理综','总分']
print("第⼆列的值为:",col_info)#第⼆列的值为:['班级','⾼三三班','⾼三三班','⾼三三班']
#获取单元格内容的数据类型,注意这⾥的值另有含义
print("第⼆⾏第⼀列的【值类型】为:",(1,0).ctype)#第⼆⾏第⼀列的【值类型】为:3
#遍历所有表单内容
():
forrinrange():
#输出指定⾏内容,这⾥包含原有类型指定,不能直接获取到指定列的值
row_val_list=(r)
print(row_val_list)
#[text:'时间',text:'班级',text:'姓名',text:'语⽂',text:'数学',text:'英语',text:'理综',text:'总分']
#遍历⾏内,输出当前⾏内的所有列值
col_val_list=[col_orcol_valinrow_val_list]
print(col_val_list)
3、修改Excel
修改Excel是通过xlutils库的copy⽅法将原来的Excel整个复制⼀份,然后再做修改操作,最后再保存
修改前
修改后
上代码
importxlrd
portcopy
#打开excel⽂件,带格式复制
read_book=_workbook("",formatting_info=True)
#复制⼀份
wb=copy(read_book)
#选取第⼀个表单
sh1=_sheet(0)
#在第五⾏新增写⼊数据
(4,0,'2020-12-16')
(4,1,'⾼三三班')
(4,2,'⼩鱼仙倌⼉')
(4,3,150)
(4,4,150)
(4,5,150)
(4,6,300)
#选取第⼆个表单
sh2=_sheet(1)
#替换总成绩数据
(1,2,100)
#保存
('')
注意,复制xls这⾥有格式问题
似乎没有任何简单的⽅法可以保留单元格的格式;它总是被吹⾛并设置为空⽩。
附录
到此这篇关于python读写修改Excel之xlrd&xlwt&xlutils的⽂章就介绍到这了,更多相关python读写修改Excel内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
本文发布于:2023-01-28 21:07:12,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/153597.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |