xlutils.copy [python 2.7 - excel]

3 投票
1 回答
1957 浏览
提问于 2025-04-17 21:18

我刚开始学习python(其实我对编程也不太熟悉)。

我在使用 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")

我收到的错误信息是:

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)

我安装的xlutils版本:1.7.0
操作系统:windows 8
Excel版本:office 2013

1 个回答

1

xlrdxlwtxlutils 是用来处理 xls 文件的工具,但它们没有更新来支持 xlsx 文件,这就导致了你遇到的多个错误。

作为解决办法,现在有一个Python库 openpyxl,可以轻松地读取和写入 Excel 的 xlsxxlsmxltxxltm 文件。

撰写回答