python 让办公变得自动化
openpyxl是什么
openpyxl是一个python第三方库,用于操作excel表格。openpyxl可以对excel进行读取数据或者写入数据,使办公变得自动化!
安装
前面说过openpyxl是一个第三方库,所以我们在使用openpyxl之前要进行一个安装。我们可以用wheel安装法,也可以用zip,但是我建议大家还是用pip,简便一些。
- 首先我们要打开我们的终端
- 在终端里输入pip install openpyxl
(下载速度太慢的可以使用豆瓣源pip install openpyxl -i http://pypi.douban.com/simple/) - 如果没报错,就说明安装成功了!
读取数据
安装完毕之后,我们就开始尝试读取excel里面的数据,就拿一个叫做报价.xlsx的文件举例子。
(请扫码获取文件)
首先,我们要从openpyxl这个库里面导入一个叫做load_workbook的模块,输入这段代码。
from openpyxl import load_workbook
之后我们就能导入我们的excel表格了。不过要注意的是,excel表格文件有两种后缀名,一种是.xlsx,还有一种是.xls。我们在导入的时候我们只能导入.xlsx的excel表格文件。如果你的excel表格文件是.xls结尾的,你可以把后缀名改成.xlsx。不用担心,改了之后你的excel表格不会出现任何问题的。还有的就是load_workbook这个函数不能用于创建excel表格,只能获取到已经创建的表格。
(这里的话我建议还是打开xls文件另存为xlsx文件, xls文件也有xlrd、xlwt两个包能使用,但是这两个包不好用)
workbook = load_workbook('报价.xlsx')#这里请输入你的excel表格文件的路径
在我们这个的报价表格文件里,我们有两张工作表(英文为sheet)。分别叫做Sheet1和Sheet2(当然你可以改名)。我们可以用workbook.sheetnames属性来打印出所有的sheet。
print(workbook.sheetnames)
我们还可以通过workbook[sheet名字]获取表格,然后再通过sheet.dimensions属性获取Sheet1和Sheet2的大小。
for i in workbook.sheetnames:
sheet = workbook[i]#获取每一张sheet工作表
print(sheet.dimensions)#打印出每一张sheet工作表的尺寸
返回结果:
A1:B5
A1:A1
若要获取当前的工作表名字,使用sheet.title方法
print(sheet.title)
如果要获取一个指定格子的数据,我们可以通过cell = sheet[格子],然后cell.value实现。
cell = sheet['A1']
print(cell.value)
这样我们就获取到了A1格子的数据“PS5 2020款”。
如果要获取某一列的所有带有数据的格子,我们可以这么做。
cells = sheet['A']#进入A列
print(cells)
返回结果(元组):
(<Cell ‘Sheet1’.A1>, <Cell ‘Sheet1’.A2>, <Cell ‘Sheet1’.A3>, <Cell ‘Sheet1’.A4>, <Cell ‘Sheet1’.A5>)
写入数据
我们完成了如何读取数据,现在就来开始创建一个excel表格文件。
引入我们的openpyxl库。
import openpyxl
如果你已经创建好了一个准备被写入的excel表格文件,请输入一下代码。
wb = openpyxl.load_workbook('文件路径')
如果你想写入数据到一个还没有被创建过的excel文件,请输入一下代码。
wb = openpyxl.Workbook()
我们现在还要获取sheet,如果你是单个sheet,直接这样做就行了。
sheet = wb.active
如果你的excel表格文件有多张工作表,你就需要这样做。
sheet = workbook[指定工作表名称]
以下是在指定格子写入数据的代码。
cell = sheet['格子']#把A1改成你想要的格子
cell.value = '内容'
wb.save(保存的文件名)
当你打开这个excel文件,你就会发现A1格子上你刚刚写入的数据(若这个格子已经有了一段文字,新写入的数据会把它覆盖掉)。
若想要一次性写入多个数据,我们还可以利用sheet.append方法。
data = [['x','x','x'],['x','x','x','x']]
for row in data:
sheet.append(row)
wb.save(保存的文件名)
data是一个带有列表的列表,里面的列表的数据就相当于工作表的每一行,在每一次append之后,sheet就会跳到下一行继续加数据。
如果你想创建一个新的sheet,那你可以使用create_sheet()方法。
下一步
openpyxl的教程就结束了,如果你还想了解更多关于openpyxl的东西,你可以进行百度openpyxl的帖子。或者你还可以去阅读openpyxl的官方教程
本作品采用《CC 协议》,转载必须注明作者和本文链接
太有用啦~谢谢