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



我有一些代码可以使用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

不幸的是,目前答案是否定的xlwt不支持写名字。 也许有一天,但我不希望很快

。据

我所知,以编程方式在.xls文件中写入名称的唯一方法是自动运行应用程序的实例,例如Windows上的Excel本身具有pywin32pywinauto或某种风格的Visual Basic等。 我相信,如果您无法使用 Excel,则有类似的方法来编写脚本 OpenOffice.org。

最新更新