首页 > 解决方案 > Openpyxl 无法读取引用它之前写入的单元格的函数值

问题描述

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

我有一个 Excel 文件,其中只包含单元格=A1中的公式B1。我想(1)将值 123 写入 cell A1,(2)保存工作簿,(3)再次打开它并(4)读取 cell 的内容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。

标签: pythonopenpyxl

解决方案


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


推荐阅读