python 让办公变得自动化

openpyxl是什么

openpyxl是一个python第三方库,用于操作excel表格。openpyxl可以对excel进行读取数据或者写入数据,使办公变得自动化!

安装

前面说过openpyxl是一个第三方库,所以我们在使用openpyxl之前要进行一个安装。我们可以用wheel安装法,也可以用zip,但是我建议大家还是用pip,简便一些。

  1. 首先我们要打开我们的终端
  2. 在终端里输入pip install openpyxl
    (下载速度太慢的可以使用豆瓣源pip install openpyxl -i http://pypi.douban.com/simple/)
  3. 如果没报错,就说明安装成功了!

读取数据

安装完毕之后,我们就开始尝试读取excel里面的数据,就拿一个叫做报价.xlsx的文件举例子。
python 操作excel表格
(请扫码获取文件)

首先,我们要从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 协议》,转载必须注明作者和本文链接
coder Derek
讨论数量: 1

太有用啦~谢谢

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!