xlwt / xlutils.copy不保留单元格(我没有触摸)格式

时间:2018-08-08 08:47:25

标签: python excel xlwt xlutils

我正在编写一个python脚本以在xls文件中添加新工作表,并且我正在使用xlrdxlutils.copyxlwt进行操作。这是我的代码:

wb=xlwt.Workbook()
rb=xlrd.open_workbook(MY_FILE_PATH, formatting_info=True)           
wb = copy(rb)   
sht1 = wb.add_sheet('newSheet')
-- add some data
wb.save(MY_FILE_PATH)

问题是,我在现有工作表中没有碰到的某些单元格的格式(您可以看到我仅添加了一个新工作表)被更改了。具体来说,我有两个更改:

  • 某些原始格式为日期的单元格(默认情况下为日期) 格式为yyyy/m/d)现在具有自定义格式(和格式 字符串为m/d/yy)。

  • 我丢失了在conditional formatting中设置的所有孔。

有人可以告诉我如何将格式保留在不需要修改的单元格中吗?我在python 3.5.5 64 bitswindowsxlrd version 1.1.0xlutils 2.0.0上使用xlwt 1.3.0。非常感谢你!

更新:

我通过将最后一个调用wb.save(MY_FILE_PATH)更改为wb.save(MY_FILE_PATH_2)进行了更多测试,即我以新名称保存了文件。我可以看到只有在save调用之后文件才被更改(在这种情况下,原始的MY_FILE_PATH保持不变)。实际上,即使新文件添加了工作表,新保存的文件的大小也比原始文件小。这表明在save调用中丢失了一些格式化信息。至少从我能看到的conditional formatting丢失导致大小减小的情况下(我认为更改日期格式不会太大地影响文件大小)。

1 个答案:

答案 0 :(得分:1)

xlrd似乎还不支持条件格式。

您可以通过将verbosity = 1传递给open_workbook函数来检查错误日志。

  

rb = xlrd.open_workbook(MY_FILE_PATH,formatting_info = True,verbosity = 1)

或者,openpyxl似乎支持“条件格式” 。可以改为检查此软件包。