Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python openpyxl data_only=True返回无_Python_Excel_Openpyxl - Fatal编程技术网

Python openpyxl data_only=True返回无

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'].值

我有一个简单的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'].值) 无#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文件时是否启用了自动计算?这与前面的答案相同。