2016-11-10 3 views
1

То, что я пытаюсь сделать, это в основном написать новый файл excel из данных, которые я получаю из списка. Содержимое списка - это содержимое строки, которое я пытаюсь записать в новом файле excel с помощью xlsxwriter (в частности, xlsx, потому что я использую xlsx). Если предположить, что у меня есть фрагмент кода ниже, он дает мне ошибку:Python - TypeError: объект «Cell» не итерируется

TypeError: 'Cell' object is not iterable

Целые точки StackTrace это во время мероприятия записи.

Traceback (most recent call last): 
File "Desktop/excel-copy.py", line 33, in <module> 
    sheet.write_row(row_index, col_index, cell_value) 
    File "/usr/local/lib/python2.7/dist-packages/xlsxwriter/worksheet.py", line 64, in cell_wrapper 
    return method(self, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/xlsxwriter/worksheet.py", line 989, in write_row 
    for token in data: 
TypeError: 'Cell' object is not iterable 


import xlrd 
import xlsxwriter 

new_workbook = xlsxwriter.Workbook() 
sheet = new_workbook.add_worksheet('stops') 

#copy all row and column contents to new worksheet 
for row_index, row in enumerate(ordered_list_stops): 
    for col_index, cell_value in enumerate(row): 
     print("WRITING: " + str(cell_value) + "AT " + str(row_index)+ " " + str(col_index)) 
     sheet.write_row(row_index, col_index, cell_value) 

new_workbook.save('output.xlsx') 

Я не могу указать, является ли cell_value причиной. Я попытался напечатать его, и это результат:

WRITING: text:u'4977'AT 0 0

ответ

2

Проблема заключается в том, что write_row принимает список (или другой итерацию) значений, и вы передаете один Cell объект (cell_value) вместо этого.

Вы либо хотите использовать sheet.write(row_index, col_index, cell_value) или пропустить внутренний for петлю и использовать sheet.write_row(row_index, 0, row)

+0

Действительно! Благодаря! У меня просто другая ошибка, но я буду размещать это в отдельном вопросе, я думаю :) – Reiion

 Смежные вопросы

  • Нет связанных вопросов^_^