找回密码
 会员注册
查看: 19|回复: 0

Python-进阶-Excel基本操作

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
65944
发表于 2024-9-4 17:21:43 | 显示全部楼层 |阅读模式
文章目录Excel基本操作1.概述2.写入2.1使用xlwt2.2使用XlsxWriter3.读取4.修改Excel基本操作1.概述在数据处理方面,Python一直扮演着重要的角色,对于Excel操作,它有着完整且成熟的第三方库,使用也较为简单。Python中常用Excel操作库如下:xlrd:从Excel中读取数据,支持xls、xlsx。xlwt:向Excel中写入数据,支持xls。xlutils:提供了一些Excel的实用操作,比如复制、拆分、过滤等,通常与xlrd、xlwt一起使用。XlsxWriter:向Excel中写入数据,支持xlsx。openpyxl:用于读写Excel,支持xlsx。2.写入我们向Excel中写入一些数据。2.1使用xlwtxlwt:向Excel中写入数据,支持xls。在终端通过pipinstallxlwt命令安装。importxlwt#创建工作簿wb=xlwt.Workbook()#创建表单sh=wb.add_sheet('test')#创建字体对象font=xlwt.Font()#字体加粗font.bold=Truealm=xlwt.Alignment()#设置左对齐alm.horz=0x01#创建样式对象style1=xlwt.XFStyle()style2=xlwt.XFStyle()style1.font=fontstyle2.alignment=alm#write方法参数1:行,参数2:列,参数3:内容sh.write(0,1,'姓名',style1)sh.write(0,2,'年龄',style1)sh.write(1,1,'张三')sh.write(1,2,50,style2)sh.write(2,1,'李四')sh.write(2,2,30,style2)sh.write(3,1,'王五')sh.write(3,2,40,style2)sh.write(4,1,'赵六')sh.write(4,2,60,style2)sh.write(5,0,'平均年龄',style1)#保存wb.save('test.xls')1234567891011121314151617181920212223242526272829303132执行结果:2.2使用XlsxWriterXlsxWriter:向Excel中写入数据,支持xlsx。在终端通过pipinstallXlsxWriter命令安装。importxlsxwriter#创建工作簿workbook=xlsxwriter.Workbook('test.xlsx')#创建表单sh=workbook.add_worksheet('test')fmt1=workbook.add_format()fmt2=workbook.add_format()#字体加粗fmt1.set_bold(True)#设置左对齐fmt2.set_align('left')#数据data=[['','姓名','年龄'],['','张三',50],['','李四',30],['','王五',40],['','赵六',60],['平均年龄','',]]sh.write_row('A1',data[0],fmt1)sh.write_row('A2',data[1],fmt2)sh.write_row('A3',data[2],fmt2)sh.write_row('A4',data[3],fmt2)sh.write_row('A5',data[4],fmt2)sh.write_row('A6',data[5],fmt1)chart=workbook.add_chart({'type':'line'})workbook.close()1234567891011121314151617181920212223242526272829XlsxWriter可以很方便的生成图表。importxlsxwriter#创建工作簿wk=xlsxwriter.Workbook('test.xlsx')#创建表单sh=wk.add_worksheet('test')fmt1=wk.add_format()fmt2=wk.add_format()#字体加粗fmt1.set_bold(True)#设置左对齐fmt2.set_align('left')#数据data=[['','姓名','年龄'],['','张三',50],['','李四',30],['','王五',40],['','赵六',60],['平均年龄','',]]sh.write_row('A1',data[0],fmt1)sh.write_row('A2',data[1],fmt2)sh.write_row('A3',data[2],fmt2)sh.write_row('A4',data[3],fmt2)sh.write_row('A5',data[4],fmt2)sh.write_row('A6',data[5],fmt1)'''area:面积图bar:直方图column:柱状图line:折线图pie:饼图doughnut:环形图radar:雷达图'''chart=wk.add_chart({'type':'line'})#创建图表chart.add_series({'name':'=test!$B$1','categories':'=test!$B$2B$5','values':'=test!$C$2C$5'})chart.set_title({'name':'用户年龄折线图'})chart.set_x_axis({'name':'姓名'})chart.set_y_axis({'name':'年龄'})sh.insert_chart('A9',chart)wk.close()1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950执行结果:3.读取xlrd:从Excel中读取数据,支持xls、xlsx。我们使用xlrd读取之前写入的数据,使用pipinstallxlrd命令安装。importxlrd#打开wb=xlrd.open_workbook('test.xlsx')print('sheet名称:',wb.sheet_names())print('sheet数量:',wb.nsheets)#根据sheet索引获取sheetsh=wb.sheet_by_index(0)#根据sheet名称获取sheet#sh=wb.sheet_by_name('test')print(u'sheet%s有%d行'%(sh.name,sh.nrows))print(u'sheet%s有%d列'%(sh.name,sh.ncols))print('第二行内容:',sh.row_values(1))print('第三列内容:',sh.col_values(2))print('第二行第三列的值为:',sh.cell_value(1,2))print('第二行第三列值的类型为:',type(sh.cell_value(1,2)))123456789101112131415164.修改xlutils:提供了一些Excel的实用操作,比如复制、拆分、过滤等,通常与xlrd、xlwt一起使用。之前写入的数据还有一个平均年龄是空着的,我们先读取之前写入的数据,再计算出平均值,最后将平均值写入。这里要用到xlutils模块,使用pipinstallxlutils安装。importxlrd,xlwtfromxlutils.copyimportcopydefavg(list):sumv=0foriinrange(len(list)):sumv+=list[i]returnint(sumv/len(list))#formatting_info为True表示保留原格式wb=xlrd.open_workbook('test.xls',formatting_info=True)#复制wbc=copy(wb)sh=wb.sheet_by_index(0)age_list=sh.col_values(2)age_list=age_list[1:len(age_list)-1]avg_age=avg(age_list)sh=wbc.get_sheet(0)#设置左对齐alm=xlwt.Alignment()alm.horz=0x01style=xlwt.XFStyle()style.alignment=almsh.write(5,2,avg_age,style)wbc.save('test.xls')123456789101112131415161718192021222324执行结果:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-31 03:40 , Processed in 0.844328 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表