1

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

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

假设这是 using 的自然效果,我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
4

1 回答 1

0

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

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

于 2013-02-14T04:28:45.590 回答