Openpyxl 无法读取引用它之前写入的单元格的函数值

Openpyxl is not able to read function value refering to a cell which it wrote into previously

我对 openpyxl 包有疑问。为了说明这个问题,我准备了一个简单的例子。

我有一个 excel 文件,其中只包含 B1 单元格中的公式 =A1。我想 (1) 将值 123 写入单元格 A1,(2) 保存工作簿,(3) 再次打开它,(4) 读取单元格 B1 的内容。我得到的不是 123,而是 None。您可以在下面找到一个简单的代码,(我希望)它应该按照刚才的描述进行操作。谁能看到我做错了什么?

import openpyxl

# open file and select sheet
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')

# write value into cell A1
sheet['A1'].value = 123

# save the file and close it
wb.save('example.xlsx')
wb.close()

# open the file again and select sheet
wb = openpyxl.load_workbook('example.xlsx', data_only=True)
sheet = wb.get_sheet_by_name('Sheet1')

# read value from cell containing referece to cell A1 => why it returns None?
print(sheet['B1'].value)

# close the file
wb.close()

非常感谢,

麦基

PS: 我在 Win7 上使用 python 3.5.5、openpyxl 2.5.6 和 MS Office 2013。

openpyxl 不会也不会计算公式的结果,因此公式 B1=A1 只会在您打开 excel sheet 或使用将计算它的其他程序时计算。我相信还有其他库可以提供帮助,例如 pycel。

由于上述评论没有完全回答我的问题,我将补充一个link另一个补充thread。希望它能帮助其他面临同样问题的人。我没有意识到必须使用 Excel 应用程序打开和保存更新的 excel 文件...

此致,

麦基

尝试在加载工作簿时将 'data_only' 参数设置为 True。

wb = load_workbook("example.xlsx", data_only=True)
print(sheet['B1'].value)

这将在 B1 单元格计算公式后打印结果。