xlwings报错'Sheet' object has no attribute 'cell',如何修正copy_range函数?
解决xlwings中'Sheet' object has no attribute 'cell'错误
问题原因
xlwings的Sheet对象没有cell()方法,你错误调用了不存在的方法导致报错。xlwings获取单元格的正确方式是使用cells(row, column)或者range((row, column))。
修正方案
修改copy_range函数中的单元格获取代码,二选一即可:
方案1:使用cells方法
def copy_range(start_col, start_row, end_col, end_row, sheet): range_selected = [] for i in range(start_row, end_row + 1, 1): row_selected = [] for j in range(start_col, end_col + 1, 1): # 替换cell为cells row_selected.append(sheet.cells(i, j).value) range_selected.append(row_selected) return range_selected
方案2:使用range方法
def copy_range(start_col, start_row, end_col, end_row, sheet): range_selected = [] for i in range(start_row, end_row + 1, 1): row_selected = [] for j in range(start_col, end_col + 1, 1): # 使用range传入(row, column)元组获取单元格 row_selected.append(sheet.range((i, j)).value) range_selected.append(row_selected) return range_selected
额外修正
你的numerical_sort函数存在笔误:part[1::2]应该改为parts[1::2],否则后续调用该函数时会触发NameError。
完整修正代码
import os, shutil from tkinter import * from tkinter import filedialog import re import xlwings as xw import numpy as np file_names = xw.Book(filedialog.askopenfilename()) file_names_sh = file_names.sheets['fe_0.85'] folder_source_train = filedialog.askdirectory() train_destination = r'D:\Machine_learning\train/' numbers= re.compile(r'(\d+)') def numerical_sort(value): parts= numbers.split(value) # 修正笔误:part改为parts parts[1::2]= map(int, parts[1::2]) return parts def copy_range(start_col, start_row, end_col, end_row, sheet): range_selected = [] for i in range(start_row, end_row + 1, 1): row_selected = [] for j in range(start_col, end_col + 1, 1): row_selected.append(sheet.cells(i, j).value) range_selected.append(row_selected) return range_selected selectedRange_train = copy_range(1, 1, 2, 100, file_names_sh)
内容的提问来源于stack exchange,提问作者KJ Kim
相关产品推荐
相关产品推荐

