xlwt/xlutils.copy 不保留单元格(我没碰过)格式
xlwt/xlutils.copy doesn't preserve cell (which I didn't touch) format
我正在编写一个 python 脚本来在 xls
文件中添加一个新的 sheet,我正在使用 xlrd
、xlutils.copy
和 xlwt
去做。这是我的代码的样子:
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)
问题是,我在现有 sheet 中没有触及的某些单元格的格式(您可以看到我只添加了一个新的 sheet)发生了变化。具体来说,我有两个变化:
一些原本格式为日期的单元格(默认情况下
格式为 yyyy/m/d
) 现在格式为自定义(和格式
字符串为 m/d/yy
).
我丢失了我在 conditional formatting
中设置的所有格式。
有人能告诉我如何保留单元格中不需要修改的格式吗?我在 windows
和 xlrd version 1.1.0
、xlutils 2.0.0
、xlwt 1.3.0
上使用 python 3.5.5 64 bits
。非常感谢!
更新:
我通过将上次调用 wb.save(MY_FILE_PATH)
更改为 wb.save(MY_FILE_PATH_2)
进行了更多测试,即我用新名称保存了文件。我可以看到只有在调用 save
之后文件才会更改(在这种情况下,原始 MY_FILE_PATH 保持不变)。实际上,新保存的文件的大小比原来的文件小,即使新文件添加了 sheet。这表明在 save
调用中丢失了一些格式信息。至少从我所看到的情况来看,conditional formatting
丢失了,从而减小了文件大小(我假设日期格式的更改不会对文件大小造成太大影响)。
看起来 xlrd 还不支持条件格式。
您可以通过将 verbosity=1 传递给 open_workbook 函数来查看错误日志。
rb=xlrd.open_workbook(MY_FILE_PATH, formatting_info=True, verbosity=1)
另外,openpyxl 似乎支持 "Conditional Formatting"。可以检查这个包。
我正在编写一个 python 脚本来在 xls
文件中添加一个新的 sheet,我正在使用 xlrd
、xlutils.copy
和 xlwt
去做。这是我的代码的样子:
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)
问题是,我在现有 sheet 中没有触及的某些单元格的格式(您可以看到我只添加了一个新的 sheet)发生了变化。具体来说,我有两个变化:
一些原本格式为日期的单元格(默认情况下 格式为
yyyy/m/d
) 现在格式为自定义(和格式 字符串为m/d/yy
).我丢失了我在
conditional formatting
中设置的所有格式。
有人能告诉我如何保留单元格中不需要修改的格式吗?我在 windows
和 xlrd version 1.1.0
、xlutils 2.0.0
、xlwt 1.3.0
上使用 python 3.5.5 64 bits
。非常感谢!
更新:
我通过将上次调用 wb.save(MY_FILE_PATH)
更改为 wb.save(MY_FILE_PATH_2)
进行了更多测试,即我用新名称保存了文件。我可以看到只有在调用 save
之后文件才会更改(在这种情况下,原始 MY_FILE_PATH 保持不变)。实际上,新保存的文件的大小比原来的文件小,即使新文件添加了 sheet。这表明在 save
调用中丢失了一些格式信息。至少从我所看到的情况来看,conditional formatting
丢失了,从而减小了文件大小(我假设日期格式的更改不会对文件大小造成太大影响)。
看起来 xlrd 还不支持条件格式。
您可以通过将 verbosity=1 传递给 open_workbook 函数来查看错误日志。
rb=xlrd.open_workbook(MY_FILE_PATH, formatting_info=True, verbosity=1)
另外,openpyxl 似乎支持 "Conditional Formatting"。可以检查这个包。