2014-03-07 51 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文件。