openpyxl 2.4.2:公式生成的单元格值保存后为空

Léa*_*ult 5 python excel openpyxl

我使用 openpyxl 打开一个文件,编辑一些单元格并保存更改。下面是一个例子:

  import openpyxl
  book = openpyxl.load_workbook(sheet_path)    
  sheet = book.active

  for row in range(sheet.max_row):
      index = row + 1
      sheet.cell(row=index, column=1).value = "something"

  book.save(sheet_path)
Run Code Online (Sandbox Code Playgroud)

问题是,当我保存文件时,其他单元格被修改。事实上,我的工作表中包含公式的单元格已“损坏”,文件大小大大减小,当我使用其他脚本读取工作表时,包含公式的单元格报告为空。但是当我打开工作表时,一切看起来都很正常,当我保存时,一切都被修复了,文件大小又恢复了正常。我认为问题来自 openpyxl 在保存时没有“计算”公式。这将减小文件大小并需要手动打开/保存以获得真实的单元格值。如果不完全更改我使用的库,我找不到任何解决此问题的方法。任何帮助将不胜感激,谢谢!

cco*_*cco 2

当 openpyxl 读取和写入现有公式时,计算值将被省略,并且不会为新公式计算任何值。openpyxl 在工作簿中设置一个标志,告诉 excel 在加载时重新计算公式值,这就是为什么当你用 excel 查看时一切看起来都很正常。