Python openpyxl data_only=True返回无
我有一个简单的excel文件:Python openpyxl data_only=True返回无,python,excel,openpyxl,Python,Excel,Openpyxl,我有一个简单的excel文件: A1 = 200 A2 = 300 A3 = =SUM(A1:A2) 该文件在excel中工作,并为SUM显示正确的值,但在使用用于python的openpyxl模块时,我无法在data\u only=True模式下获取值 来自shell的Python代码: wb=openpyxl.load_工作簿('writeFormula.xlsx',data_only=True) 工作表=wb.active 活页['A3'] #python响应 打印(活页['A3'].值
A1 = 200
A2 = 300
A3 = =SUM(A1:A2)
该文件在excel中工作,并为SUM
显示正确的值,但在使用用于python的openpyxl模块时,我无法在data\u only=True
模式下获取值
来自shell的Python代码:
wb=openpyxl.load_工作簿('writeFormula.xlsx',data_only=True)
工作表=wb.active
活页['A3']
#python响应
打印(活页['A3'].值)
无#python响应
而:
wb2=openpyxl.load_工作簿('writeFormula.xlsx')
sheet2=wb2.active
表2['A3']的值
'=SUM(A1:A2)#python响应
有什么建议我做错了什么吗?这取决于文件的出处
data_only=True
取决于Excel等应用程序缓存的公式值。但是,如果该文件是由openpyxl或类似库创建的,则很可能该公式从未计算过,因此,没有可用的缓存值,openpyxl将报告None
作为值。我已经用openpyxl和Python复制了该问题
我目前正在使用openpyxl版本2.6.3和Python 3.7.4。此外,我假设您正在尝试完成阿尔·斯维加特的ATBSWP练习
考虑到Excel确实可以缓存值,我尝试并测试了Charlie Clark的答案。我在Excel中打开了电子表格,将公式复制并粘贴到同一个单元格中,最后保存了工作簿。在使用Openpyxl和data_only=True选项在Python中重新打开工作簿并读取此单元格的值时,我看到了正确的值500,而不是错误的值None类型
我希望这能有所帮助。我遇到了同样的问题。阅读完这篇文章后,我设法修复了它,只需打开excel文件,进行更改,然后再次保存文件。这是一个多么奇怪的问题。嗯,您指定了“仅数据”,并且您试图获取具有公式而非数据的单元格的值?是的,但我没有得到500值。同样,您只指定了数据。那个单元格里没有数据。它有一个公式。您已告知
openpxyl
忽略非数据单元格。公式单元格是非数据单元格,因此将忽略它。值500
未存储在单元格中。@kindall不完全正确:openpyxl将读取缓存值(如果有)。@kindall data_only=true读取单元格中的数据,而不是公式,当您打开Excel文件时是否启用了自动计算?这与前面的答案相同。