[英]python - Error while opening XLS file with xlrd after creating the same file with xlwt
我的脚本使用xlwt模块创建XLS文件(其中填充了一些数据)并将其保存在工作目录中。 该操作的第一部分已成功完成。 在同一脚本中,下一部分是读取保存的XLS文件,并基于该文件创建另一个填充了一些值的XLS文件。 保存了第一个XLS后,出现如下错误,无法使用xlrd读取已保存的XLS;
ERROR: Traceback (most recent call last):
ERROR: File "C:\Esri_SCRIPTS\GDB_FC_SourceMapping_Service_V6\GDB_FC_SourceMapping_V6_Dev.py", line 200, in <module>
ERROR: wb=xlrd.open_workbook(CurWrokDir + '\DataSources.xls')
ERROR: File "C:\Python26\ArcGIS10.0\lib\site-packages\xlrd\__init__.py", line 454, in open_workbook
ERROR: bk.parse_globals()
ERROR: File "C:\Python26\ArcGIS10.0\lib\site-packages\xlrd\__init__.py", line 1473, in parse_globals
ERROR: self.handle_sst(data)
ERROR: File "C:\Python26\ArcGIS10.0\lib\site-packages\xlrd\__init__.py", line 1446, in handle_sst
ERROR: self._sharedstrings = unpack_SST_table(strlist, uniquestrings)
ERROR: File "C:\Python26\ArcGIS10.0\lib\site-packages\xlrd\__init__.py", line 1663, in unpack_SST_table
ERROR: nchars = local_unpack('<H', data[pos:pos+2])[0]
error: unpack requires a string argument of length 2
ERROR:
ERROR: unpack requires a string argument of length 2
通过在该论坛上搜索发现的解决方法是,打开从第一部分保存的XLS输出,然后保存并关闭。 运行脚本的第二部分,它将成功运行。
我要实现的是一起运行脚本而没有任何错误。 换句话说,运行脚本...第一部分将保存XLS,第二部分将立即开始从第一部分读取保存的XLS输出并生成第二输出为XLS。
任何帮助将不胜感激。 提前致谢。
如下例所示,通过xlrd
写入文件并通过xlwt
重新读取文件没有根本问题:
import xlwt
import xlrd
# Write an Excel file.
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')
worksheet.write(0, 0, 'Hello')
worksheet.write(1, 0, 12345)
workbook.save('test.xls')
# Now read it back in.
workbook = xlrd.open_workbook('test.xls')
worksheet = workbook.sheet_by_name('Sheet1')
print worksheet.row(0)[0].value
print worksheet.row(1)[0].value
打印:
$ python reread.py
Hello
12345.0
因此,由您来调试导致错误的程序问题是什么。
鉴于在Excel中保存文件后看不到问题,很可能这是xlwt
问题,但是再次需要证明这一点或为开发人员提供调试方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.