python - xlwt/xlutils.copy 不保留单元格(我没有触摸)格式
问题描述
我正在编写一个 python 脚本来在xls
文件中添加一个新工作表,并且我正在使用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)
问题是,我在现有工作表中没有触及的一些单元格的格式(你可以看到我只添加了一个新工作表)发生了变化。具体来说,我有两个变化:
最初格式为日期的某些单元格(默认情况下格式为
yyyy/m/d
)现在具有自定义格式(格式字符串为m/d/yy
)。我丢失了我在
conditional formatting
.
有人可以告诉我如何保留不需要修改的单元格中的格式吗?我正在python 3.5.5 64 bits
使用windows
和xlrd version 1.1.0
, xlutils 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
丢失的情况来看,它减小了大小(我假设日期格式的更改不会对文件大小影响太大)。
解决方案
看起来 xlrd 还不支持条件格式。
您可以通过将 verbosity=1 传递给 open_workbook 函数来查看错误日志。
rb=xlrd.open_workbook(MY_FILE_PATH,formatting_info=True,verbosity=1)
或者,openpyxl似乎支持"Conditional Formatting"。可以改为检查这个包。
推荐阅读
- javascript - Highcharts 渲染周期(无数标签格式化程序调用)
- python - scikit-learn train_test_split 是否保留关系?
- java - 基于选择结果的基本锁定
- .htaccess - htaccess 文件中 https 的重定向规则不起作用
- c - 将提交推送到 GitHub
- python - Python Pandas:删除A列第一个空单元格下方的所有数据行
- c# - 单击电子邮件中的链接时显示特定记录
- sql - 从带有标签 a 或 b 和 c 的表中选择行
- javascript - 如何在 json/csv 中转换 sql 转储文件
- alfresco - 来自户外内容的常见元数据字段如何工作?