Pourquoi cette boucle Python ne parvient-elle pas à afficher la prochaine ligne Excel disponible ?
Question
Tout d'abord:Merci d'avance pour toute aide.Je suis totalement novice en programmation et mon code le reflétera.Je vais essayer de décrire ce que j'essaie de faire et d'afficher le code.Encore une fois, merci pour votre temps et vos explications.
L'objectif: Je souhaite que Python ouvre un fichier Excel existant (output.xls) et saisisse une valeur (dans ce cas, « texte de test ») dans la prochaine ligne disponible de ce document.J'ai essayé d'utiliser une boucle « while » et une instruction « if » pour y parvenir.Bien qu’aucun d’entre eux ne renvoie d’erreurs, aucun d’eux ne parvient à déplacer correctement la sortie au-delà de la deuxième ligne.Voici ce que j'ai.
from xlrd import open_workbook
from xlutils.copy import copy
import xlwt
wb = open_workbook('output.xls',formatting_info=True)
sheet = wb.sheet_by_name("sheet 1")
#This is the simple test text here.
a = 'just a test'
rb = copy(wb)
ws = rb.get_sheet(0)
row = 0
cell = sheet.cell(row,4)
Ce que j'essaie de dire ci-dessous, c'est -ALORS QUE- la cellule n'est pas vide (tapez 6), puis ajoutez-en une à la ligne et répétez.C'EST À DIRE:Continuez jusqu'à ce que vous ayez atteint une ligne vide dans la quatrième colonne.
while cell.ctype != 6:
row = row + 1
ws.write(row,4,a)
Et là, j'espère confirmer les résultats.
print cell.ctype
rb.save('output.xls')
Quoi qu'il en soit, lorsque j'exécute le code, il ne semble pas dépasser la première ligne.C'est comme si le code disait : « super, la première cellule n'est pas de type six », mais ne va pas au-delà.Malgré des heures de recherche sur le net, je n'arrive pas à trouver une raison à cela.
Toute aide/conseils est extrêmement apprécié.
--- MODIFIER ---
Voici les erreurs que je reçois concernant les réponses suggérées.L'erreur est identique.
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\Folder", line 19, in <module>
cell = sheet.cell(row,4)
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 395, in cell
xfx = self.cell_xf_index(rowx, colx)
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 421, in cell_xf_index
xfx = self._cell_xf_indexes[rowx][colx]
IndexError: list index out of range
La solution
Vous ne passez jamais à la cellule suivante.Il suffit de changer la variable row
n'influence pas cell
.Essayez plutôt ce code :
cell = sheet.cell(row,4)
while cell.ctype != 6:
row = row + 1
if row >= sheet.nrows:
break
cell = sheet.cell(row,4) # <-- actually move the "pointer" in the excel sheet
Autres conseils
vous avancez index de ligne - mais vous ne lisez pas une nouvelle cellule, votre cellule reste donc la même, et vous entrez une boucle sans fin
while cell.ctype != 6:
row = row + 1
cell = sheet.cell(row,4)
devrait fonctionner
Vous êtes à court de lignes - facilement fixe
try:
while cell.ctype != 6:
row = row + 1
cell = sheet.cell(row,4)
except IndexError:
<do something>
Personnellement, j'ai un sentiment que votre course trop vite - vous essayez de devenir trop profonde sans apprendre les bases