Python通过坐标读取Excel单元格报Worksheet无cell属性错误如何解决
报错原因
你通过xlutils.copy得到的wb是xlwt库的工作簿对象,对应的sh是xlwt.Worksheet实例,该类仅封装了写入相关的方法,没有提供cell()这类读取单元格的方法,因此抛出属性不存在的错误。
解决方案
方案1:同时保留读取、写入两个工作表对象(兼容原xlrd/xlwt技术栈)
读取操作直接用原始xlrd打开的工作表完成,写入操作用copy得到的可写工作表完成,修改后代码如下:
import xlrd from xlutils.copy import copy book = xlrd.open_workbook_xls("abc.xls", formatting_info=True) # 保留原始只读工作表用于读取数据 read_sh = book.sheet_by_index(0) wb = copy(book) # 可写工作表仅用于写入 write_sh = wb.get_sheet(0) a = 1 for i in range(10): # 用原始只读对象读取单元格 cell1 = read_sh.cell(0,1) # 要打印单元格值可以取.value属性 print(cell1.value) write_sh.write(i,0, a) print(a) a = a+1 wb.save("abc.xls")
如果需要获取单元格内容参与计算,直接调用read_sh.cell(row, col).value拿到对应数值/字符串即可。
方案2:更换为支持同时读写的库(新代码更推荐)
如果不需要兼容旧的技术栈,可以根据你处理的文件格式更换更易用的库:
- 处理
.xlsx格式:用openpyxl库,同一个工作表对象同时支持cell(row, column).value的读取和写入 - 处理
.xls格式:用xlwings库,可直接对接本地Excel程序实现双向读写
内容的提问来源于stack exchange,提问作者GCMeccariello
相关产品推荐
相关产品推荐

