日常的工作和学习过程中充斥着大量excel操作,比如打开excel文件、计算数据、保存数据、绘图等等。python有诸多可以操作excel数据的模块如pandas,但想要一览完整的pandas是个相对庞大的工程,从操作excel出发python有更轻量的工具。本文将带大家认识一下python操作excel的模块——openpyxl,一个更容易上手的实用型模块。
openpyxl是第三方扩展库,通过 pip install openpyxl安装。
接下来我们逐一进行介绍。
import openpyxl as ox
workbook = ox.Workbook() # 内存中创建一个新的excel对象
worksheet_1 = workbook.create_sheet(title='sheetname', index=0) # 在指定位置插入新的sheet
workbook.save('./excel_project/newfile.xlsx') # newfile 命名文件,保存到同级的excel_project 文件夹中
workbook = ox.load_workbook('./excel_project/newfile.xlsx') # ###读excel文件
worksheet = workbook['sheetname'] # 读某个sheet
msg = worksheet['A1'].value # 读单元格的内容
print(worksheet)
print(msg)
# 运行结果:
<class 'openpyxl.worksheet.worksheet.Worksheet'>
Values
worksheet['A5'] = 'Values' # 方式1:写入单元格,此时只在内存读写
worksheet.cell(row=5, column=5, value='Values') # 方式2:写入单元格
workbook.save('./excel_project/newfile.xlsx') # 保存本地
甚至可以直接向单元格写入公式,如:
worksheet['A5'] = '=B5/C5'
但必要性不强。
既然使用python操作,就要构建关于数据处理的函数,将excel数据读取后带入函数计算,再将结果写入excel,这样明显高效很多且代码灵活性高,数据模型也能根据实际需要随时修订。
访问excel对象的一些属性:
namelist = workbook.sheetnames
worksheet.append(['values1', 'values2', 0, 1])
ranges = worksheet['A1':'C5']
这里不过多介绍了,感兴趣的同学可自行尝试。
想要实现还需结合python的其他作图模块。这里介绍一个比较便捷的替代方法,就是事先在excel里绘好透视表区域,再将计算结果写入,借用excel的自身功能生成区域内的透视图。
可以看到操作很简单,但实战还要做到融汇贯通,将python的语法和模块有效结合起来,才能发挥出openpyxl实际的应用价值。