Python 修改 Excel 文件

519 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情

前言

在本节中,我们将学习如何使用新数据值更新现有 Excel 电子表格,包括更改单元格中的原始值和设置在电子表格打开时自动执行的计算公式,此外,我们还将学习如何为单元格添加注释。

Python 修改 Excel 文件

安装 openpyxl 库

为了更新电子表格,我们需要使用 openpyxl 库。,其安装方法与其它第三方库的安装完全相同:

$ pip install openpyxl

修改 Excel 文件

假设在Excel 文件中有以下数据,其中用户 '001' 对电影 'Star Wars' 的评分有误,其实际评分为 7.8,因此需要修改此文件,同时我们想要计算所有评分的总和并显示在表格中。

User nameMovie namerating
1Star Wars7.8
2Back to Future8
2Batman7.7
3Spy 0078.3

首先,导入 openpyxl 模块和 Comment 类:

>>> import openpyxl
>>> from openpyxl.comments import Comment

打开 Excel 文件 movies_rating.xlsx,将文件加载到内存并获取工作表:

>>> xlsfile = openpyxl.load_workbook('movies_rating.xlsx')
>>> xlsfile.sheetnames
['movies_rating']
>>> sheet = xlsfile['movies_rating']

获取单元格 C2 的值:

>>> sheet['C2'].value
7.9

在导入所需库并读取电子表格后,我们选择将要进行修改的单元格。

将值由 7.9 更改为 7.8,更新值是通过赋值操作完成的:

>>> sheet['C2'].value = 7.8

向该单元格添加注释,使用新 Comment 类实例覆盖单元格的 comment 属性来为添加单元格添加注释,需要注意的是,必须要添加添加注释的用户名 (Comment 类的第二个参数):

>>> sheet['C2'].comment = Comment('Changed value', 'panxiaohui')

添加一个新元素,用于获取 rating 列中所有值的总和:

>>> sheet['C6'] = '=SUM(C2:C5)'

单元格中的值还可以使用公式进行描述,本节中,我们我们向单元格 C6 添加了一个新公式。公式的计算结果并不是在 Python 中完成的,而是在打开文件时计算并显示该值,此值是由 Excel 计算得到的。这意味着公式可能由于出现错误或电子表格中公式所使用的单元格错误导致显示异常结果。因此,在使用公式时,务必仔细检查公式以及相关单元格中的数据是否正确。

将修改后的电子表格另存为 movies_rating_change.xlsx 文件:

>>> xlsfile.save('movies_rating_change.xlsx')

检查生成的文件,其中包括注释和 C6 中计算的 C 列中所有评分数据之和:

movies_rating_change.xlsx