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"
应该可以。但是您可能需要尝试各种选项才能使其按照您的需要工作。
注意。谁知道您保存在工作簿中的宏想要做什么。
我收到的电子表格充满了我无权访问的用户定义的公式(某些 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"
应该可以。但是您可能需要尝试各种选项才能使其按照您的需要工作。
注意。谁知道您保存在工作簿中的宏想要做什么。