使用openpyxl是否可同时为Excel单元格写入公式与对应值?
这个需求完全可实现,不需要手动修改底层XML,用openpyxl原生功能就能完成。
openpyxl的单元格对象提供了专门的cached_value属性,对应你需要的<v>标签存储的公式缓存值。你用pycel计算出结果后直接给这个属性赋值即可,保存文件时会自动把值写入<v>标签,公式本身会保留在<f>标签里,完全满足你的需求。
修改后的可用示例代码如下:
from openpyxl import Workbook wb = Workbook() ws = wb.active ws['A1'], ws['A2'] = 1, 2 # 写入公式 ws['A3'] = '=SUM(A1:A2)' # 直接设置缓存值,可替换为pycel的计算结果 ws['A3'].cached_value = 3 ws['A4'] = '=SWITCH(A1:A2, 1, 2, 2, 1)' # 同理设置你计算好的结果 ws['A4'].cached_value = 2 wb.save('testing_xml.xlsx')
运行后再解压查看sheet1.xml,就能看到A3和A4对应的<v>标签已经有你设置的值了,不需要额外做XML解析、修改的操作。该功能在openpyxl 2.6及以上版本都支持,不需要额外安装依赖。
内容的提问来源于stack exchange,提问作者Iulia Gheorghita
相关产品推荐
相关产品推荐

