我尝试加载excel文件以更改其中的某些值并读取一些公式。 如果我得到一个新的excel文件(该文件没有用openpyxl保存),则可以使用以下代码读取公式结果:
from openpyxl import *
wb = load_workbook(filename="test1.xlsx",data_only=True)
sheet1 = wb.active
print(sheet1["b9"].value)
### b9 formul is '=SUM(A1+A2+A3)' that's also working in excel.
###output is :37
但是,如果更改了文件内的内容,如下所示:
from openpyxl import *
wb =load_workbook(filename="test1.xlsx")
sheet = wb.active
sheet["A1"]=42
sheet["A2"]=33
sheet["A3"]=22
wb.save(filename="test1.xlsx")
wb = load_workbook(filename="test1.xlsx",data_only=True)
sheet1 = wb.active
print(sheet1["b9"].value)
##output is : None
当我检查excel文件时,一切似乎都很好。公式是正确的,列已更改,但是当我尝试使用python读取excel公式时,我看不到结果,结果变成了None,如果从工作簿中删除了data_only = True,我也可以看到公式。 我的代码有什么问题。
答案 0 :(得分:0)
尝试使用xlwings
。您可以打开并查看数据,例如:
import xlwings as xw
wb = xw.Book("test1.xlsx")
sht = wb.sheets["Your sheet"]
print(sht.range('B9').value)
或对其进行了修改:
sht.range('A1').value = 42
sht.range('A2').value = 33
sht.range('A3').value = 22
并保存:
wb.save()
然后重新打开它:
other_wb = xw.Book("test1.xlsx")
sht_other_wb = other_wb["your sheet"]
print(sht_other_wb.range("B9").value)