在使用xlwt创建相同文件后,使用xlrd打开XLS文件时出错

时间:2014-01-07 02:00:04

标签: python excel xls xlrd 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。

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 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中的一些问题,但您需要再次演示或为开发人员提供一些调试方法它