因为我需要解析并使用单元格中的实际数据,所以我在openpyxl
中用data_only = True
打开一个xlsm。在
事实证明这是非常有用的。但是现在,同样需要在单元格中包含formuale的xlsm,当我保存更改时,保存的版本中缺少公式。在
data_only = True
和公式是互斥的吗?如果没有,如何在保存时访问单元格中的实际值而不丢失公式?在
当我说我失去公式时,似乎公式的结果(和、连接等)得到了保留。但当点击单元格时,实际的公式本身不再显示。在
更新:
为了确认公式是否被保存,我重新打开了保存的xlsm,这次是data_only
保留为False
。我检查了使用公式构造的单元格的value
。如果保留了公式,则在data\U仅设置为False的情况下打开xlsm应返回公式。但它返回实际的文本值(这不是我想要的)。在
你的问题之一是:
data_only = True
和公式是互斥的吗?在openpyxl中,答案是肯定的。在
但这并不是Excel固有的。你可以有一个像openpyxl这样的库来访问公式和结果。这不太可能发生,因为openpyxl的维护人员在哲学上反对这个想法。在
因此,在openpyxl中处理这种情况的方法是加载两次工作簿:一次使用
data_only=True
读取数据(保存在内存中),然后作为一个“不同”的工作簿使用data_only=False
再次加载,以获得可写版本。在使用Python修改现有工作簿同时保留所有内容(包括格式、公式、图表、宏等)的“规范”方法是使用COM接口(如PyWin32,或更高级的包装器,如pywinauto或{a3})来控制Excel的运行实例。当然,只有在安装了Excel的机器上运行时,这才是可能的。在
如果要保留工作簿的完整性,即保留公式,则不能使用
data_only=True
。文件表明了这一点。在相关问题 更多 >
编程相关推荐