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

Worksheet format breaks when saving excel file with 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=从工作簿来看也是如此,我也可以看到公式。 我的代码有什么问题。

试试 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)