我的脚本使用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。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:0)
通过xlwt
撰写文件并通过xlrd
重新阅读文件没有根本问题,如下例所示:
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
中的一些问题,但您需要再次演示或为开发人员提供一些调试方法它