为什么x =“无”而不是“500”?我已经尝试了我所知道的一切,并搜索了1个小时的答案...谢谢你的任何帮助!
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.active
sheet["A1"] = 200
sheet["A2"] = 300
sheet["A3"] = "=SUM(A1+A2)"
wb.save("writeFormula.xlsx")
wbFormulas = openpyxl.load_workbook("writeFormula.xlsx")
sheet = wbFormulas.active
print(sheet["A3"].value)
wbDataOnly = openpyxl.load_workbook("writeFormula.xlsx", data_only=True)
sheet = wbDataOnly.active
x = (sheet["A3"].value)
print(x) # None? Should print 500?
5条答案
按热度按时间ig9co6j11#
来自文档
openpyxl从不计算公式
vwkv1x7d2#
文档说明:
data_only控制包含公式的单元格是包含公式(默认)还是包含Excel上次读取工作表时存储的值。
因此,如果您没有使用Excel打开过该.xlsx文件(writeFormula.xlsx),那么Excel将没有任何数据可存储。因此,您的程序将返回一个
NoneType
值。如果您希望程序返回“500”,则应手动打开“writeFormula. xlsx”。然后,对程序的文件创建部分进行注解。您将得到“500”。我已经试过了,效果很好。如果你有不同的意见,请告诉我。谢谢。
uyto3xhc3#
有一种简单的方法可以启动excel并更新公式值。
示例代码段
g0czyy6m4#
检查Excel中单元格的格式。
我也遇到了这个问题。The documentation指示您必须通过excel应用程序打开工作簿并重新保存它,然后返回的值将作为上次计算的值。
我这样做了,我仍然得到了“没有”作为我的回报。
和许多Excel/VBA问题一样,原来这是一个格式问题。我将单元格的格式设置为“会计”而不是“数字”。将其更改为数字后,它工作了。
yxyvkwin5#
我也有同样的问题,解决方法是手动打开xlsx文件,关闭后点击保存,完成此操作后,可以尝试wbDataonly编程部分,得到数据500