這是我的代碼from openpyxl import Workbookfrom openpyxl import load_workbookdef get_data_list(filename, sheetname): data = record = [] # load excel file, read only mode wb = load_workbook(filename, read_only=True) # select sheet sheet = wb[sheetname] # write into data for row in sheet.rows: for cell in row: record.append(cell.value) data.append(record) record = [] return data def write_data_list(data, filename, sheetname, no_header=False): wb = Workbook() sheet = wb.active sheet.title = sheetname # check header data if no_header : data.pop(0) # insert data for row in data: sheet.append(row) # save into file wb.save(filename)data = get_data_list('excel/sample.xlsx','Sheet1')# print(type(data))write_data_list(data, 'data.xlsx', 'data')我運行此代碼并生成此錯誤消息:Traceback (most recent call last): File "C:\Users\xxx\Projects\mergexl\rw.py", line 37, in <module> write_data_list(data, 'data.xlsx', 'data') File "C:\Users\xxx\Projects\mergexl\rw.py", line 31, in write_data_list sheet.append(row) File "C:\Users\xxx\.virtualenvs\mergexl-aotJkH4X\lib\site-packages\openpyxl\worksheet\worksheet.py", line 788, in append self._invalid_row(iterable) File "C:\Users\xxx\.virtualenvs\mergexl-aotJkH4X\lib\site-packages\openpyxl\worksheet\worksheet.py", line 872, in _invalid_row type(iterable))TypeError: Value must be a list, tuple, range or generator, or a dict. Supplied value is <class 'str'>如您所見,此錯誤在第 33 行顯示了一個問題,即“sheet.append(row)”不斷詢問列表數(shù)據(jù)類型輸入。但是,變量數(shù)據(jù)已經(jīng)是一個列表。我已經(jīng)檢查了數(shù)據(jù)類型print(type(data))那么輸出是類“l(fā)ist”, 但錯誤消息一直告訴數(shù)據(jù)是類“str”有什么解決辦法嗎?
1 回答

Qyouu
TA貢獻1786條經(jīng)驗 獲得超11個贊
data = record = [] 沒有做你認為它做的事情。
它綁定data并record命名到同一個列表對象。
第一次下面的循環(huán)運行,data并且record是同一個列表,所有在cell.value第一行中被添加到列表之前record加入。
cell.value 不是列表類的實例。
for row in sheet.rows:
for cell in row:
record.append(cell.value)
data.append(record)
record = []
return data
您需要將數(shù)據(jù)和記錄初始化為單獨的列表。
data = []
for row in sheet.rows:
record = []
for cell in row:
record.append(cell.value)
data.append(record)
return data
添加回答
舉報
0/150
提交
取消