IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Créer en python un classeur Excel?


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Créer en python un classeur Excel?
    Bonjour,

    Je recherche de la doc pour créer un classeur Excel en python depuis un environnement linux.
    Plus précisément, j'ai un script shell qui me cré des fichiers CSV (colonnes de nombres séparées par des ; ) et je souhaiterais fusionner sous linux ces fichiers CSV en un classeur Excel où chaque fichier correspondrait à une feuille de calcul dans le classeur.

    J'ai trouvé ce lien : http://www.developpez.net/forums/d15...el-sous-linux/ mais je n'ai pas compris grand chose ...

    Si vous connaissez des tutos ou autre documentation sur ce type de manipulation, je suis preneur!

    Merci beaucoup!

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Es-tu obligé de travailler avec Excel ? Peux-tu utiliser ooCalc ?

    Quelle est la complexité des classeurs que tu veux produire ?

    Le format utilisé par ooCalcl étant du XML compréhensible (caché dans un fichier compressé), il est possible de faire rapidement un script Python pour créer des feuilles de calcul pas trop complexes.

    Sinon je viens de trouver ceci : http://ooolib.sourceforge.net/. A tester...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    je peux te proposer pyExcelerator:

    http://sourceforge.net/projects/pyexcelerator/

    il y a des exemples fournis dans l'archive

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Merci pour ta réponse. Les personnes qui vont utiliser le classeur de calculs sont sous Windows et sont des utilisateurs d'Excel.

    Les feuilles de calculs que je dois faire sont relativement simple : je dois tabuler des lois analytique et réaliser un calcul d'erreur relative avec les fichiers CSV générés.

    Je ne connais pas ooCalc, je vais me renseigner dessus. Si c'est réalisable avec ooCalc, je leur proposerai en solution alternative.


    @kango :
    Ton module pyExcelerator semble bien correspondre à ce que je veux faire. Je vai regarder les exemples d'utilisation et je vous tien au courant!

    Encore merci pour ces infos!

  5. #5
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par rambc Voir le message
    Le format utilisé par ooCalcl étant du XML compréhensible (caché dans un fichier compressé), il est possible de faire rapidement un script Python pour créer des feuilles de calcul pas trop complexes.
    Soit dit en passant, le format xlsx (Office Excel 2007) est également une archive zip contenant du xml.
    Ce xlm répond au format OpenXML.

  6. #6
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Citation Envoyé par Gyslain Voir le message
    Ton module pyExcelerator semble bien correspondre à ce que je veux faire. Je vai regarder les exemples d'utilisation et je vous tien au courant!
    Si tu pouvais nous mettre ici un exemple tout simple cela serait sympa.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut ou utiliser win32com?
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from win32com.client import Dispatch
    xlApp = Dispatch("Excel.Application")
    xlApp.Visible = 1
     
    xlApp.Workbooks. Add()
    xlApp.ActiveSheet.Cells(1,1).Value = '(1,1) via active sheet'
    xlApp.Workbooks("Book1") .Sheets("Sheet1").Cells(1,1).Value = "(1,1)/Book1/Shet1- names"
    xlApp.Workbooks(1).Sheets(1).Cells(1,1).Value = "(1,1)/book_id/sheet_id"
    xlBook = xlApp.Workbooks(1)
    xlSheet = xlApp.Sheets(1)
    xlSheet.Cells(1, 1).Value = "(1,1) en bref"

    Ce qui suppose développer un peu sur windows.
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    pour répondre à rambc, un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import pyExcelerator as Excel
     
    def writexls(data):
     
        xls = Excel.Workbook()
        sheets = {}
        for name in data.keys():
            sheet = xls.add_sheet(name) # je crée une feuille nommée name
            sheet.write(0,0,"A1") # j'écris "A1" dans la cellule A1 (0,0)
            j = 0
            for value in data[name]:
                j += 1
                sheet.write(j,0,"%f" % value) # j'écris à la ligne j, colonne 0
        xls.save("out.xls") # je crée le fichier out.xls

  9. #9
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci.

  10. #10
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Personnellement du temps où j'utilisais excel pour créer des rapports depuis un petit soft python, j'avais trouvé une solution assez simple.

    Dans une feuille cachée et protégée (par exemple data) je renseignais dans la colonne A et ligne par ligne mes données, et dans les autres feuilles j'utilisais la fonction "=" pour recopier la cellule voulue (par exemple =data!A1).

    Si j'ai bonne mémoire dans la feuille data, les cellules étaient renseignées par un simple "write", comme si tu la traitais comme un fichier .txt dans lequel tu ajoutes tes données ligne par ligne.

    Par contre d'un point de vue sécurité c'est pas forcément le top, mais je pense pas que ce soit ce que tu recherches étant donné le format de sortie que tu utilise (.xls)
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Oui je fais aussi cela.
    De la même eau, on doit pouvoir dire à EXCEL d'importer les données depuis un fichier .CSV (comme DSN). Mais dans ce cas, on est plus en train de jouer avec COM/OLE et Microsoft Office que dans du Python.
    Note: Il devrait être possible mais je n'ai jamais essayé d'appeler un plugin Python depuis EXCEL.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Créer du code vba excel réutilisable dans d'autres classeurs excel
    Par nicoMU dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/11/2008, 15h22
  2. Réponses: 6
    Dernier message: 16/09/2008, 11h58
  3. [C#] Créer une nouvelle feuille dans un classeur Excel
    Par amoiraud dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/03/2008, 08h53
  4. Créer un fichier journal suite à mise à jour de classeur Excel
    Par tinkye_winkye dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2007, 20h18
  5. créer classeur Excel portant le nom d'une ComboBox
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 06/12/2006, 09h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo