Python XLWT tente d'écraser la solution de contournement de cellule
En utilisant le module python xlwt, écrit à la même cellule à deux reprises renvoie une erreur:
Message File Name Line Position
Traceback
<module> S:\********
write C:\Python26\lib\site-packages\xlwt\Worksheet.py 1003
write C:\Python26\lib\site-packages\xlwt\Row.py 231
insert_cell C:\Python26\lib\site-packages\xlwt\Row.py 150
Exception: Attempt to overwrite cell: sheetname=u'Sheet 1' rowx=1 colx=12
avec l'extrait de code
def insert_cell(self, col_index, cell_obj):
if col_index in self.__cells:
if not self.__parent._cell_overwrite_ok:
msg = "Attempt to overwrite cell: sheetname=%r rowx=%d colx=%d" \
% (self.__parent.name, self.__idx, col_index)
raise Exception(msg) #row 150
prev_cell_obj = self.__cells[col_index]
sst_idx = getattr(prev_cell_obj, 'sst_idx', None)
if sst_idx is not None:
self.__parent_wb.del_str(sst_idx)
self.__cells[col_index] = cell_obj
Ressemble le code 'élever es une exception qui arrête le processus en entier. Est retrait de la "relance", terme assez pour permettre d'écraser les cellules? J'apprécie xlwt de l'avertissement, mais je pensais que le pythonic façon est d'assumer "nous savons ce que nous faisons". Je ne veux pas casser quelque chose d'autre à toucher le module.
source d'informationauteur PPTim | 2010-04-21
Vous devez vous connecter pour publier un commentaire.
Le problème est que l'écrasement de données de feuille de calcul est désactivé par défaut dans
xlwt
. Vous devez l'autoriser explicitement, comme suit:Ce que Nie B. a écrit est précieux conseils, à l'exception du fait que, comme
xlwt
est un fork depyExcelerator
"l'auteur du module" est mal définie 😉... et Kaloyan Todorov a frappé le clou sur la tête.
Voici quelques autres conseils:
(1) Remarquez la ligne suivante dans le code que vous avez cité:
et la recherche du code pour
_cell_overwrite_ok
et vous devriez venir à Kaloyan de conclusion.(2) Poser des questions sur (et de chercher dans les archives de l') python-excel google-groupe
(3) découvrez ce site qui donne des pointeurs vers les google-groupe et à un tutoriel.
De fond: le problème est que certaines personnes ne savent pas ce qu'ils faisaient (et dans un cas au moins, nous étions heureux d'être dit), et le comportement que xlwt hérité de pyExcelerator était aveugle d'écrire deux (ou plus) des enregistrements pour le même cellule, ce qui conduit non seulement à un fichier dilatation mais aussi de la confusion, parce qu'Excel puisse se plaindre et de montrer les premiers écrits et OpenOffice et Gnumeric serait silencieusement montrer le dernier écrit. Enlever toute trace de l'ancien données de la chaîne partagée tableau afin de ne pas gaspiller de l'espace ou (pire) d'être visible dans le fichier était un pain PITA.
L'ensemble de la saga est enregistré dans le google-groupe. Le tutoriel comprend une section sur l'écrasement des cellules.
Si vous:
...essayez ceci:
Vous devriez vous mettre en contact avec l'auteur du module. Retirant simplement une
raise
est peu probable de travailler bien. Je suppose qu'il pourrait mener à d'autres problèmes par la suite. Par exemple, plus tard, le code peut supposer qu'une cellule donnée est seulement dans la représentation intermédiaire une fois.