如何在openpyxl中保存而不丢失公式?

2024-10-01 00:15:38 发布

您现在位置:Python中文网/ 问答频道 /正文

因为我需要解析并使用单元格中的实际数据,所以我在openpyxl中用data_only = True打开一个xlsm。在

事实证明这是非常有用的。但是现在,同样需要在单元格中包含formuale的xlsm,当我保存更改时,保存的版本中缺少公式。在

data_only = True和公式是互斥的吗?如果没有,如何在保存时访问单元格中的实际值而不丢失公式?在

当我说我失去公式时,似乎公式的结果(和、连接等)得到了保留。但当点击单元格时,实际的公式本身不再显示。在

更新:

为了确认公式是否被保存,我重新打开了保存的xlsm,这次是data_only保留为False。我检查了使用公式构造的单元格的value。如果保留了公式,则在data\U仅设置为False的情况下打开xlsm应返回公式。但它返回实际的文本值(这不是我想要的)。在


Tags: 数据文本版本falsetrueonlydatavalue
2条回答

你的问题之一是:data_only = True和公式是互斥的吗?

在openpyxl中,答案是肯定的。在

但这并不是Excel固有的。你可以有一个像openpyxl这样的库来访问公式和结果。这不太可能发生,因为openpyxl的维护人员在哲学上反对这个想法。在

因此,在openpyxl中处理这种情况的方法是加载两次工作簿:一次使用data_only=True读取数据(保存在内存中),然后作为一个“不同”的工作簿使用data_only=False再次加载,以获得可写版本。在

使用Python修改现有工作簿同时保留所有内容(包括格式、公式、图表、宏等)的“规范”方法是使用COM接口(如PyWin32,或更高级的包装器,如pywinauto或{a3})来控制Excel的运行实例。当然,只有在安装了Excel的机器上运行时,这才是可能的。在

如果要保留工作簿的完整性,即保留公式,则不能使用data_only=True。文件表明了这一点。在

相关问题 更多 >