Comments on: Lire et écrire dans un fichier XLS avec Python http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: Sam http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8467 Fri, 26 Apr 2013 06:26:46 +0000 http://sametmax.com/?p=5793#comment-8467 Très sympas tout ça.

]]>
By: kage http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8460 Thu, 25 Apr 2013 17:17:29 +0000 http://sametmax.com/?p=5793#comment-8460 Cette lib m’a bien sauvée today elle en plus très facile à prendre en main, création d’un fichier xls en 2minutes chrono!

]]>
By: Poulet 2.0 http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8427 Wed, 24 Apr 2013 15:16:20 +0000 http://sametmax.com/?p=5793#comment-8427 @Fred: je peux me tromper (lourdement, j’ai l’habitude), mais PyExcelerator n’est plus maintenu. Les légendes numériques racontent que xlrd/xlwt a demarré comme un fork de PyExcelerator, il est maintenu et la transition devrait se faire en douceur.

]]>
By: Sam http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8229 Sat, 20 Apr 2013 20:11:47 +0000 http://sametmax.com/?p=5793#comment-8229 @Guts: a priori, je dirais que unicode(s) devrait être s.decode(‘un_encoding’) et qu’il faudrait le connaitre (et éviter le try / except généraliste qui cache surement un bug d’encoding du à la méconnaissance du format). Sinon, comme il n’y a pas le code de la sauvegarde dans posgres, si le code de récupération de la donnée depuis posgress (deux autres points ou ça peut foirer), on ne peut pas savoir. Un article sur l’encoding en Python arrive demain, si tu te sens d’attendre.

]]>
By: Fred http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8226 Sat, 20 Apr 2013 18:45:28 +0000 http://sametmax.com/?p=5793#comment-8226 Mouais. Moi j’utilise pyexcelerator (http://pyexcelerator.sourceforge.net). Je ne sais pas s’il est mieux ou moins bien mais comme j’étais seul quand il m’a fallu me dém… pour crer de l’Excel ben c’est lui que j’ai choisi…

]]>
By: Guts http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8224 Sat, 20 Apr 2013 17:03:50 +0000 http://sametmax.com/?p=5793#comment-8224 Salut,

@sil : +1000 sur windows tu peux ajouter 5 ans d’études supplémentaires

@Poulet 2.0 : il y a également Python-docx qui se base sur le puissant lxml.

L’API COM est réellement une autoflagellation à l’acide pour faire le moindre truc.

ceci étant dit, je rencontre actuellement un souci sur une fonction d’export d’un xls vers csv, au niveau de l’encoding. L’idée étant d’exporter un fichier d’adresses (hispanophones) au format .xls en entrée vers du .csv afin de pouvoir l’importer dans postgresql (9.2) dont l’encoding de la table est nécessairement fixé sur LATIN1. Les caractères spéciaux, correctement encodés dans le excel finissent par apparaître merdiquement dans la table pg en sortie. Et a priori, ça chie dans la colle au moment de l’export en csv, malgré un encodage à la volée.

Ex d’adresse :
dans le excel : Av. Carlos Alberto Izaguirre Nº 813
dans pg : “Av. Carlos Alberto Izaguirre Nº 813″

Ci-dessous la fonction d’export :

import csv, xlrd, xlwt
    def xls2csv(self, xlspath):
        u""" export an Excel 2003 file (.xls) to a CSV file
        see: http://stackoverflow.com/a/10803229 """
        with xlrd.open_workbook(xlspath) as book:
            sheet = book.sheet_by_index(0)
            with open('temp/' + path.splitext(path.basename(xlspath))[0] + '.csv', 'wb') as f:
                out = csv.writer(f, delimiter='\t', dialect = 'excel')
                for row in range(sheet.nrows):
                    try:
                        out.writerow(sheet.row_values(row))
                    except:
                         out.writerow([unicode(s).encode("utf-8") for s in sheet.row_values(row)])
 
        # End of function
        return book, f

J’ai bien essayé d’utiliser le paramètre encoding override mais sans succès… Une ch’tite idée dans l’assistance ?

]]>
By: panchua http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8189 Fri, 19 Apr 2013 07:40:11 +0000 http://sametmax.com/?p=5793#comment-8189 Pour écrire du xls ou xlsx, tablib fait du très bon boulot (xlwt en backend). Par contre il n’a pas l’air de pouvoir les lire.

]]>
By: Poulet 2.0 http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8186 Fri, 19 Apr 2013 07:01:11 +0000 http://sametmax.com/?p=5793#comment-8186 Il manque à cet article un paragraphe sur le format “.xlsx” (le format “ouvert” de Microsoft):
Depuis récemment (?), le module xlrd sait lire un fichier Excel 2010, mais son jumeau xlwt ne sait pas encore écrire dans ce format.
Pour cà, il existe la librairie openpyxl, le peu que j’en ai testé c’est qu’elle est moins réactive pour lire un fichier (la faute au format, XML compressé), mais elle semble stable et complète.

La librairie Pandas utilise d’ailleurs ces 3 modules en interne selon le format Excel utilisé.

]]>
By: sil http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8174 Thu, 18 Apr 2013 20:55:58 +0000 http://sametmax.com/?p=5793#comment-8174 Mouais, il faut avoir Bac+12 pour comprendre l’API UNO.

]]>
By: kontre http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/#comment-8173 Thu, 18 Apr 2013 20:01:55 +0000 http://sametmax.com/?p=5793#comment-8173 C’est rigolo qu’on puisse écrire les formules mais pas les lire !

Pour les scientifiques (ou les autres, je suis pas ségrégationniste) qui chargent des données depuis des fichiers xls (ou csv, ou texte, ou hdf5, ou…), je vous conseille plus que fortement d’utiliser la librairie pandas. Ça sort directement des tableaux numpy avec les noms des entêtes, ça gère les points manquants, c’est magique. Et ça utilise xlrd en backend, bien entendu. C’est “plus puissant mais aussi beaucoup plus contraignant”. J’ai découvert ça après avoir parsé des fichiers à la main, la différence est radicale !

http://pandas.pydata.org/
http://pandas.pydata.org/pandas-docs/stable/io.html#excel-files

]]>