2016-11-10 1 views
1

Ce que j'essaie de faire est essentiellement d'écrire un nouveau fichier Excel à partir des données que je reçois d'une liste. Le contenu de la liste est le contenu de la ligne que j'essaie d'écrire dans le nouveau fichier Excel en utilisant le xlsxwriter (en particulier xlsx parce que j'utilise xlsx). En supposant que je l'extrait de code ci-dessous, il me donne l'erreur:Python - TypeError: l'objet 'Cell' n'est pas itérable

TypeError: 'Cell' object is not iterable

Les points entiers STACKTRACE ceci lors de l'événement d'écriture.

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') 

Je ne peux pas vraiment indiquer si cell_value est la cause. J'ai essayé de l'imprimer et voici le résultat:

WRITING: text:u'4977'AT 0 0

Répondre

2

Le problème est que write_row prend une liste (ou autre itérables) des valeurs, et vous passez un seul objet Cell (cell_value) à la place.

Vous voulez soit utiliser sheet.write(row_index, col_index, cell_value), ou sauter la boucle for intérieure et utiliser sheet.write_row(row_index, 0, row)

+0

En effet! Merci! J'ai juste une autre erreur mais je posterai cela dans une question séparée je suppose :) – Reiion