使用openpyxl保存excel文件时工作表格式中断

时间:2019-11-13 13:48:16

标签: python openpyxl

我尝试加载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,我也可以看到公式。 我的代码有什么问题。

1 个答案:

答案 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)