化繁为简,python操作excel

人生苦短,我学python!


化繁为简,python操作excel

python处理excel的特点

说到操作excel,很多时候单一表格的数据处理直接使用公式即可解决问题 , 稍微复杂一点使用自带的VBA也是个不错的选择 。
但是对于数据量大,操作步骤繁琐,还涉及第三方的数据接入或者对接的话,使用python绝对可以起飞 。python的pandas库处理数据可以非常快速,而且python可以使用多线程运行程序(io密集型的数据处理效率更高) 。
python操作excel的库常用的有几个,这边主要接触了xlrd、xlwt和openpyxl,前两个库分别是读取和写入xls文件的(也就是不支持xlsx文件);如果要操作xlsx文件的话建议使用openpyxl库(可支持读写),但是读写效率并不高 。如果再不写入数据的情况下要提升数据处理效率的话,使用xlrd单独读取文件是最快的 。


化繁为简,python操作excel

操作excel文件

操作excel之前一定要了解整个处理步骤,基本上表格操作都是针对单元格的,也就是需要定位到具体的单元格,我们就可以实现值的读取、修改和写入 。
记住具体的excel用wb表示,具体的sheet表用ws表示,单元格用cell属性、也可以使用行列定位具体的单元格 , 详细的使用方法如下介绍,更多的使用方法可以参考官方文档 , 包括修改单元格颜色和字体、合并单元格、自动换行等:
#导入对应的库,下面两个库分别用来创建表格和载入已有表格
from openpyxl import Workbook
from openpyxl import load_workbook
#wb是代表一个excel表格,可以创建,也可以是load本地表格
wb = Workbook()
wb = load_workbook(filename ='empty.xlsx')
#ws是代表一个sheet表,'sheet name'是已有的表格名 , 也可使用create_sheet创建表格,0代表第一个表格,1代表第二个表格
ws_sheet = wb['sheet name'] ws_support = wb.create_sheet('support',0) ws_product = wb.create sheet('product',1)
#实际赋值都是针对单元格处理的 , 可使用cell(row= ,column= ).value= #也可使用ws['A1']
for i in range(9): ws_support.cell(row=i//3 2, column=i%3 2).value=https://www.itzhengshu.com/excel/list[i]
#迭代查看单元格,可用value属性查看具体的值,cell.value
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
for cell in row:
print(cell)






for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
for cell in col:
print(cell)








化繁为简,python操作excel

创建图表

下面主要介绍两种excel图表的创建,分别是3D柱状图和饼图 , 其余图表可参考官方文档 。
#导入图表的相关库
from openpyxl.chart import ( BarChart3D, LineChart, Series, PieChart, Reference )
#3D柱状图
rows = [ (None, 2013, 2014), ("Apples", 5, 4), ("Oranges", 6, 2), ("Pears", 8, 3) ]
for row in rows:
ws.append(row)
data = https://www.itzhengshu.com/excel/Reference(ws, min_col=2, min_row=1, max_col=3, max_row=4) titles = Reference(ws, min_col=1, min_row=2, max_row=4)
chart = BarChart3D()
chart.title = "3D Bar Chart" chart.add_data(data=https://www.itzhengshu.com/excel/data, titles_from_data=True) chart.set_categories(titles)
ws.add_chart(chart, "E5")


化繁为简,python操作excel

#饼图
data = https://www.itzhengshu.com/excel/[ ['Page', 'Views'], ['Search', 95], ['Products', 4], ['Offers', 0.5], ['Sales', 0.5], ]
for row in data:
ws.append(row)
projected_pie = ProjectedPieChart() projected_pie.type = "pie" projected_pie.splitType = "val" # 根据值分割
labels = Reference(ws, min_col=1, min_row=2, max_row=5)
data = https://www.itzhengshu.com/excel/Reference(ws, min_col=2, min_row=1, max_row=5) projected_pie.add_data(data, titles_from_data=True) projected_pie.set_categories(labels)
ws.add_chart(projected_pie, "A10")
【化繁为简,python操作excel】

化繁为简,python操作excel

相关经验推荐