openpyxl 能让 Excel 相信它的工作表是完全计算出来的吗?

Can openpyxl make Excel believe that its worksheet is fully calculated?

我收到的电子表格充满了我无权访问的用户定义的公式(某些 DLL)。因为我只对这些值感兴趣,所以没关系 - 我可以使用缓存的值。我通常做的是使用 openpyxl 对此类工作簿进行硬编码,如下所示:

#!/usr/bin/python3
import sys
import openpyxl
wb=openpyxl.load_workbook(sys.argv[1],data_only=True,keep_vba=False)
wb.save(sys.argv[1])

现在工作簿只包含值,没有公式。太好了。

但是,当我链接到此类工作簿时,Excel 经常提醒我该工作簿尚未重新计算,我需要单击“确定”数百次。这很愚蠢,因为没有公式可以计算。

openpyxl 中有什么方法可以让 Excel 意识到这样的工作簿是 'fully calculated' 并且不需要重新计算吗?目前我必须在 Excel 中打开工作簿,按 F9 键并重新保存。但是因为工作簿很大,我宁愿在自动化过程中完成。

有办法吗?

您应该能够为工作簿设置“计算属性”。

类似于:

wb.calculation.calcMode = "manual"

应该可以。但是您可能需要尝试各种选项才能使其按照您的需要工作。

注意。谁知道您保存在工作簿中的宏想要做什么。