Bonjour @ tous.
Difficile de tous mettre dans le sujet alors je vous explique.
J'ai créé un python, l'objectif étant de copier l'onglet d'un fichier ".xls" vers un fichier fraîchement créé en ".xlsx".
Je suis donc initialement parti sur une boucle de type
Jusque là aucun souci, tout fonctionnait à merveille jusqu'à ce qu'un fichier source, un peu lourd passe par là et me renvoi à la tête un message du genre : MemoryError
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for row in range(0,nrows): for col in range(0,ncols): ws.cell(row=row+1, column=col+1).value = sheet.cell_value(row, col) wb.save('nouveau_fichier.xlsx')
J'ai donc décidé d'utiliser une méthode plus "light" en utilisant celle préconisée sur la doc officiel qui indique qu'il faut utiliser le paramètre write_only=True.
J'ai donc modifié mon code en recopiant à l'identique celui de la documentation :
Alors là, le résultat est...comment dire... surprenant puisqu'il indique dans chaque cellule destination un numéro correspondant au numéro de colonne et ce, sur chaque ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for row in range(nrows): ws.append(['%d' % i for i in range(ncols)]) wb.save('nouveau_fichier.xlsx')
0 1 2 3 4 5 6
0 1 2 3 4 5 6
...
J'imagine donc que c'est le paramètre '%d' qui ne colle pas mais là impossible de trouver ce qu'il est possible de faire au niveau des propriétés de ws.append, je ne trouve aucune information.
Pourriez-vous me donner un coup de main s'il vous plait ?
Par avance merci.
Geo-x
Partager