在openpyxl中保留原始单元格格式

时间:2016-05-02 15:40:49

标签: python excel python-2.7 openpyxl

我使用openpyxl版本2.3.5将数据写入现有的格式化Excel模板(扩展名为.xlsx)。问题是当我写入单元格时,该单元格的格式被完全覆盖。例如,Cell A1具有蓝色填充。当我执行以下代码时:

wb = xl.load_workbook('Template.xlsx')
ws = wb.worksheets[0]
ws['A1'] = "TEST"
wb.save('test.xlsx')

单元格A1的填充丢失。电子表格中有很多格式,因此我不想手动指定所有格式。我曾尝试将单元格的原始格式从自身复制到无效。此代码无效:

ws['A1'].style = ws['A1'].style

有没有办法保留和/或复制excel电子表格的原始样式/格式,只能写入数据?

2 个答案:

答案 0 :(得分:0)

好吧,openpyxl还没有很好的解决方案。但是,您可以使用pywin32直接与Windows API进行交互。您可以在那里做任何想要的事情。

答案 1 :(得分:0)

我发现,如果原始单元格以前具有值,则将保留格式。我正在使用“模板”擅长填写数据并生成报告。不幸的是,使用这种方法时,我需要在模板中预先填充虚拟值(创建巨大的模板文件),还需要确保在不填充数据的区域中从表中删除了虚拟值。这很痛苦,但至少格式仍然保留在那里