xlsxwriter不新建工作簿调用set_custom_property设置自定义属性
回答
XlsxWriter 完全不支持修改已存在的工作簿,不存在不新建文件直接编辑现有Excel的用法。
核心原因
- 这个库的设计目标就是从零生成全新的.xlsx格式文件,从底层就没有开发解析、回写已有Excel文件结构的逻辑,所有API包括你提到的
set_custom_property(),都只能作用于通过XlsxWriter新创建的工作簿实例。 - 如果你直接把已有文件的路径传入
xlsxwriter.Workbook()构造函数,原文件会被直接覆盖清空,不会保留任何原有内容,绝对不要这么操作。
实现需求的可行方案
你要给已有工作簿加自定义属性,选下面两种方式即可:
- 优先用支持读写现有xlsx文件的库处理,比如
openpyxl,直接加载目标文件后调用库自带的自定义属性设置接口,修改后保存就行,不需要重建整个文件,也不会丢失原有内容。 - 如果你必须用XlsxWriter实现,只能先通过其他读库把原有文件的所有工作表、格式、属性、媒体资源全量读取出来,再用XlsxWriter新建工作簿,把读取到的内容逐份写入的同时调用
set_custom_property()加上需要的属性,最后保存为新文件替换原文件。这个方案复杂度高,很容易丢失原文件里的宏、复杂图表、数据验证等特殊内容,除非有特殊需求否则不建议用。
注:不要轻信网上所谓XlsxWriter修改现有文件的偏方,所有这类操作本质上都是全量重写文件,不是真正意义上的原地修改。
内容的提问来源于stack exchange,提问作者likethevegetable
相关产品推荐
相关产品推荐

