2014-03-07 52 views
3

我(一般和编程)是新来的蟒蛇。xlutils.copy [Python 2.7版 - 练成]

我在使用xlrdxlwtxlutils用于访问XLSX工作簿(它是一种常见的问题,但我没有找到任何解决办法对我来说)的问题。

我应该改变我的包py-excel? 在那种情况下,哪一个?

这里是我的代码:

import xlrd 
import xlwt 
from xlutils.copy import copy as xlutils_copy 

rd = xlrd.open_workbook("x:/PROJECTS/Papers/2014_Pasture/a.xlsx") 
rdsh = rd.sheet_by_name("FR_PASTURE") 

wrb = xlutils_copy(rd) 
ws = wrb.get_sheet_by_name("FR_PASTURE") 

而且我收到错误:安装xlutils的

Traceback (most recent call last): 
    File "X:\PROJECTS\Papers\2014_Pasture\AdjustXLSStats.py", line 28, in <module> 
    wrb = xlutils_copy(rd) 
    File "C:\Python27\lib\site-packages\xlutils-1.7.0-py2.7.egg\xlutils\copy.py", line 19, in copy 
    w 
    File "C:\Python27\lib\site-packages\xlutils-1.7.0-py2.7.egg\xlutils\filter.py", line 937, in process 
    reader(chain[0]) 
    File "C:\Python27\lib\site-packages\xlutils-1.7.0-py2.7.egg\xlutils\filter.py", line 68, in __call__ 
    filter.cell(row_x,col_x,row_x,col_x) 
    File "C:\Python27\lib\site-packages\xlutils-1.7.0-py2.7.egg\xlutils\filter.py", line 573, in cell 
    wtrow.set_cell_number(wtcolx, cell.value, style) 
    File "build\bdist.win-amd64\egg\xlwt\Row.py", line 203, in set_cell_number 
    self.__adjust_bound_col_idx(colx) 
    File "build\bdist.win-amd64\egg\xlwt\Row.py", line 78, in __adjust_bound_col_idx 
    raise ValueError("column index (%r) not an int in range(256)" % arg) 
ValueError: column index (256) not an int in range(256) 

版本:1.7.0 操作系统:Windows 8 的Excel:办公室20113

+1

多少列有您的XLSX文件? –

+0

Tnx发布该问题。 XLrd xlwt xlutils是XLS和不XLSX ......所以我觉得在使用openpyxl你已经找到了解决办法 – Krasto

+0

@Krasto伟大的解决方案。发布它作为答案,它将在未来服务于其他人。或者将它添加为标题为“解决方案”的问题的最后部分。 –

回答

1

xlrdxlwt,和xlutils用于访问XLS文件,并没有被更新为使用XLSX文件,这会导致你的多个错误。

作为一种解决方法,现在有一个Python库openpyxl它可以方便地读写Excel中xlsx/xlsm/xltx/xltm文件。