我有一些代码,可以用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发布于 2013-02-14 12:28:46
不幸的是,现在的答案是no,xlwt不支持写名字。也许有一天,但我不期望它在短期内。
据我所知,以编程方式在.xls文件中写入名称的唯一方法是自动化应用程序的运行实例,例如使用pywin32或pywinauto的Windows上的Excel本身或某种风格的Visual Basic等。
https://stackoverflow.com/questions/12752617
复制相似问题