使用xlutils复制XLS时保留命名范围

时间:2012-10-05 19:11:12

标签: python xls xlrd xlwt xlutils

我有一些代码用xlrd打开Excel工作簿,用xlutils复制,用xlwt更新,然后将其写回另一个文件。

生成的工作簿缺少原始文件中存在的所有命名范围。我100%确定原始中存在命名范围,因为我实际上正在阅读它们(在复制之前从xlrd对象中读取)并将更新基于它们。

假设这是使用xlutils.copy.copy的自然效果,xlwt是否有某种方式可以重新创建我从同一工作簿的xlrd版本中读取的命名范围?文档(至少,我能找到的)很稀疏。

这是一个显示问题的python会话:

>>> from xlrd import open_workbook
>>> wb = open_workbook('sc_auction_template.xls', formatting_info=True)
>>> print len(wb.name_obj_list) # see, there are named ranges
9
>>> from xlutils.copy import copy
>>> wb2 = copy(wb)
>>> wb2.save('test.xls')
>>> wb = open_workbook('test.xls')
>>> print len(wb.name_obj_list) # but now there are none!
0

1 个答案:

答案 0 :(得分:0)

目前,答案很遗憾没有xlwt不支持撰写姓名。也许有一天,但我不希望它很快。

据我所知,在.xls文件中以编程方式编写名称的唯一方法是自动运行应用程序的运行实例,例如Excel本身在pywin32pywinauto的Windows上或者某些Visual Basic等。我相信如果你没有Excel,有类似的方法来编写OpenOffice.org脚本。