前言
实习的时候,大家经常会使用excel去处理数据以及展示,但是对于部分工作我们可以借助程序帮忙实现,达到高效解决问题的效果,比如将接口返回的json解析并保存结果到excel中,按一定规律处理excel中的数据然后写入到新的excel文件中,汇总来自多个文件的内容到一个excel中等等。
以往我们通常直接通过pandas直接导入Excel,但是pandas只能读取Excel之中的数据,却无法进行数据写入,那么如何通过Python进行数据读写呢?下面就为大家介绍几种除pandas以外读写Excel的工具。
1
xlsxwriter
对比而言,XlsxWriter可以创建和写Excel 2007+ XLSX文件,但是只能写不能读;xlrd、xlwt、xlutils三大模块分别提供读、写和其他功能,但是对于较大文件处理速度较慢;OpenPyXL可以读、写Excel 2007+ /xlsm/xltx/xltm文件,综合来讲功能较多,但网上有人说有很大的缺陷;Microsoft Excel API可以直接通过COM组件与Microsoft Excel进程通信调用各种功能实现对excel文件操作,但是因为需要与Excel进程通信,速度慢到怀疑人生。
综合考虑上述几个模块的优缺点,就是因为想偷懒,故我们本次着重介绍xlsxwriter模块的使用。
xlsxwriter模块主要用来生成excel表格,插入数据、插入图标等表格操作。
import xlsxwriter #导入模块workbook = xlsxwriter.Workbook('作业写不完了.xlsx') #新建excel表worksheet = workbook.add_worksheet('sheet1') #新建sheet(sheet的名称为"sheet1")headings = ['Date','A','B'] #设置表头data = [['2019-12-17','2019-12-18','2019-12-19','2019-12-20','2019-12-21','2019-12-22'],[1,2,3,4,5,6],[7,8,9,10,11,12],]worksheet.write_row('A1',headings)worksheet.write_column('A2',data[0])worksheet.write_column('B2',data[1])worksheet.write_column('C2',data[2]) #将数据插入到表格中workbook.close() #将excel文件保存关闭,如果没有这一行运行代码会报错
随后我们可以查看生成excel的结果:
2
在excel中插入折线图
此外,我们还可以在excel中插入折线图:
chart_lin = workbook.add_chart({'type':'line'})chart_lin.add_series({'name':'=sheet1!$B$1','categories':'=sheet1!$A$2:$A$7','values': '=sheet1!$B$2:$B$7','line': {'color': 'red'},})chart_lin.set_title({'name':'太南了'})chart_lin.set_x_axis({'name':"x轴"})chart_lin.set_y_axis({'name':'y轴'})chart_lin.set_style(1)worksheet.insert_chart('A10',chart_lin,{'x_offset':25,'y_offset':10})
再打开excel我们就会发现:
3
在excel中绘制柱状图
除了折线图以外,XlsxWriter还可以回执其他类型图表:
chart_col = workbook.add_chart({'type':'column'}) #柱状图chart_col.add_series({'name':'=sheet1!$B$1','categories':'=sheet1!$A$2:$A$7','values': '=sheet1!$C$2:$C$7','line': {'color': 'red'},})chart_col.set_title({'name':'难了'})chart_col.set_x_axis({'name':"x轴"})chart_col.set_y_axis({'name':'y轴'})chart_col.set_style(1)worksheet.insert_chart('A30',chart_col,{'x_offset':25,'y_offset':10})
在excel中绘制的柱状图:
4
美化
此外,XlsxWriter还可以对图表的字体及颜色等进行设置,使表格更为美观:
workfomat = workbook.add_format({'bold': True, #字体加粗'border':1, #单元格边框宽度'align': 'center', #对齐方式'fg_color': '#F4B084', #单元格背景颜色})
5
合并表格
此外,XlsxWriter还可以合并多张表格:
chart_lin.combine(chart_col)
关闭表格后,可发现Excel变成这样:
小结
通过XlsxWriter可以直接通过python在excel中直接写入数据,免去了在处理数据时需要频繁切换软件之苦,通常情况下可以使用XlsxWriter配合pandas使用,大大缩减了处理数据所需的时间。
参考: https://xlsxwriter.readthedocs.io/chart.html
本期作者:刘懋研
本期编辑校对:秦范
长按,关注数据皮皮侠

