J'ai un script qui tire des données d'une feuille de calcul Excel à l'aide du module XLRD, en particulier la méthode Row_Values (). Il semble faire un excellent travail, à l'exception de l'endroit où "# N / A" a été généré automatiquement par des vlookups précédents, auquel cas XLRD obtient "# N / A" comme entier 42. P>
J'ai consulté les méthodes de formatage des chaînes mais que cela ne pouvait pas voir comment c'était le problème. P>
En plus d'avoir un script qui a découvert le sens de la vie (42), quelqu'un peut-il suggérer quelle est la question? p>
acclamations p>
Remarque: la feuille n'a plus de vlookups, toutes les valeurs ont été copiées à partir d'autres feuilles, toutes les valeurs simples, pas de formules. P>
4 Réponses :
Documents XLRD sur le Web (ou sur votre ordinateur; ouvrez les documents de votre navigateur et do Il pourrait être utile de regarder le . Méthode Row_Types () et le Classe de cellule Documents a> qui vous donne la référence croisée entre les numéros de type comme retourné par feuille.Orow_types () et autres. Notez qu'il est généralement plus efficace de tester les numéros de type que d'utiliser ISInstance () sur les valeurs et il n'y a pas d'ambiguïté en utilisant des numéros de type. P> Ctrl-F # N / A CODE>) Vous donne le Table de conversion des codes internes Excel sur le texte . P>
Les liens ne sont pas longtemps valables pour en faire une réponse utile.
J'ai trouvé cela utile. Merci à l'aide initiale de John.
Comme Andrew listé si vous avez une erreur dans la cellule, XLRD écrit le code de l'erreur, que vous pouvez voir ici : Code convertit 0x2a de HEX en décembre Vous pouvez obtenir cette valeur 42.
Pour éviter que vous puissiez utiliser quelque chose comme celui-ci dans votre code: P> for rownum in xrange(sh.nrows):
wr.writerow(['#N/A' if col.ctype == xlrd.XL_CELL_ERROR else col.value for col in sh.row(rownum)])
SIMPLE SOLUTION peut identifier une cellule d'erreur et mettre "Aucun" au lieu de 42 strong> p> xlrd Documentation : strong> P> Vous pouvez identifier tout le autre type basé sur la documentation ci-dessous em> p> xl_cell_error 5 int Représentant des codes internes Excel; Pour une représentation de texte, reportez-vous au dictionnaire fourni error_text_from_code p> ul>
Guess Wild: Le code numérique de la valeur d'erreur Excel # N / A est 2042. Je ne sais rien sur XLRD, mais peut-être que cela aide. (Je préfère croire que votre script pense que ...)