简单总结了一下用openpyxl获取单元格值时遇到的事情。
-
操作环境
Windows 10
python 3.9.13
openpyxl 3.1.2
想做的事
- 用openpyxl获取xlsx文件的单元格值(计算结果,而不是公式)
例如,假设有一个如下所示的工作表,其中 A1 和 B1 包含数值,并且在 C1 中想要使用 SUM 函数输出 A1 和 B1 的总和。
展开分析
通常,可以按如下方式加载工作簿和工作表。
import openpyxl
wb = openpyxl.load_workbook("sample.xlsx")
sheet1 = wb["Sheet1"]
可以获取单元格 C1 的值。 但是,如果单元格包含公式,将按原封不动地收到公式,而不是计算结果。
c1 = sheet1["C1"].value
print(c1)
=SUM(A1, B1)
解决方案
如果只想获取计算结果,请在加载工作簿时指定data_only=True。 (默认为False)
wb = openpyxl.load_workbook("sample.xlsx", data_only=True)
再尝试获取c1的值(计算结果)。
import openpyxl
wb = openpyxl.load_workbook("sample.xlsx", data_only=True)
sheet1 = wb["Sheet1"]
c1 = sheet1["C1"].value
print(c1)
2
现在可以获得计算结果而不是公式。