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 :

Librairie Python pour manipuler des fichiers word


Sujet :

Python

  1. #1
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 111
    Par défaut Librairie Python pour manipuler des fichiers word
    Bonjour,

    Je voulais savoir si il existait un outil en Python pour manipuler des fichiers Word.
    Quand je recherche sur google ily a beaucoup de réponse, et je ne sais pas trop quoi choisir.

    Je suis en train de rédiger un dossier de conception.
    Pour m'y retrouver j'ai créer plusieurs fichiers Word trier dans des dossiers.
    C'est plus simple car je dois faire souvent des insertions et des suppressions, là je numérote mes fichiers.

    Je voudrais faire un script qui met bout à bout mes fichiers d'après leur nom .
    Et éventuellement si l'outil permettait des opérations :
    -regénérer la table des matières.
    - supprimer les espaces en doubles et les saut de lignes en trop
    mais j'en demande beaucoup

    Je fais surtout du Java.
    J'ai fais très peu de python mais c'est le moment de sauter le pas.
    J'ai fait beaucoup de PErl quand je faisais du PHP, pour automatiser l'installation et l'administration.
    Je pense que ça peut m'aider, car ça ressemble

    Cordialement
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    En fait, ce n'est pas Python ou Word qu'il te faut, c'est LaTeX.
    Cela correspond totalement à ton cahier des charges.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    Par défaut
    Salut,

    World est programmable via différentes API dont une COM accessible pour le programmeur Python via PyWin32.

    Ces choses là étant assez monumentales, c'est sûr que si vous partez à lire la documentation, vous n'êtes pas rendu. Mais çà vous donne quelques clefs pour chercher sur Internet des exemples de code pour démarrer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 111
    Par défaut
    MErci pour vos réponses.

    Je me demande ce qui va être le plus rapide apprendre python ou Lat'ex.

    Je pense qu'une solution en python sera plus rapide à mettre en place
    Puis passer à latex serait plus logique ensuite

    MErci
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Disons que LaTeX est une solution pérenne. Cela permet de s'affranchir de Word et cela correspond beaucoup à ton cahier des charges.
    C'est un investissement mais c'est assez simple pour le texte.
    Pour insérer les figures également.
    Pour créer des courbes, simple aussi.
    Pour créer des figures, par contre, c'est long.
    Je te conseille le forum Latex de mathematex
    [Edit] Perso, je fais des documents de 600 pages sans souci avec table des matières et plusieurs index à la fin.
    Si tu veux voir ce que cela donne (je ne suis pas un crack) : http://obelix56.free.fr/spip.php?article55

  6. #6
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut exemple avec win32
    Bonjour à tous,
    Cela fait un moment que je ne suis pas venu sur le forum
    j'avais fait en 2013 une application qui modifiaient des word et excel avec python.
    Elle a fonctionné pendant 6 ans et a traitée je pense 30000 documents.

    Bien sur qu'il existe d'autres solutions que python mais souvent.. après.. il y a d'autres actions à faire et c'est facile avec python (gestions des fichiers etc.)

    J'ai fait une classe spéciale pour les modifications avec un exemple (cela pourra me servir à moi aussi un jour..) elle fonctionne avec word et excel
    Pour le reste je te laisse chercher

    Alex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    import win32com.client as win32
    import time
    import os
     
    class Office_work:
        """ Class to work on word and excel with win32"""
        # Class constant definition for pywin32
        wdReplaceNone=0
        wdReplaceOne=1
        wdReplaceAll=2
        wdFindContinue=1
        wdAllowOnlyFormFields=2
        NoReset=True
     
        #pour close/save :
        wdDoNotSaveChanges=0
        wdSaveChanges=-1
     
        wdCharacter=1
        wdCell=12
        wdLine=5
     
        wdAlignLeft=0
        wdAlignCenter=1
        wdAlignRight=2
     
     
        def __init__(self,file_name):
            """ connect to word or excel doc """
            self.file_name=file_name
            self.type_file=self.file_name[-4:].upper() # "DOCX" or "XLSX" or "XLSM"
     
            if self.type_file=="DOCX":
                self.w = win32.Dispatch('Word.Application') # Start of word
                self.w.Visible = False # File no visible
                self.doc = self.w.Documents.Open(file_name) # word doc open
            if self.type_file in ["XLSX","XLSM"] :
                self.w = win32.Dispatch('Excel.Application') # start of excel
                self.w.Visible = False # File no visible
                self.doc = self.w.Workbooks.Open(file_name) # xlsx doc open
            time.sleep(1)
     
     
     
        def replace_all(self, oldchaine, newchaine=''):
            """
            oldchaine = string to replace
            newchaine = string for replace
            """
            if self.type_file=="DOCX":
                sel = self.w.Selection
                sel.ClearFormatting()
                sel.Find.Text = oldchaine
                sel.Find.Forward = True
                newchaine=newchaine.replace('\n','\r')
                try :
                    sel.Find.Execute( oldchaine,False,False,False,False,False,True,self.wdFindContinue,False,newchaine,self.wdReplaceAll)
                except:
                    pass
                self.position=sel
            elif self.type_file in ["XLSX","XLSM"] :
                for sh in self.w.Sheets:
                    sh.Cells(5000,5000).Value=oldchaine # not clean but oblige to do that, if not => error message if no change..
                    try:
                        sh.Cells.Replace(oldchaine, newchaine)
                    except:
                        pass
                    sh.Cells(5000,5000).Value=None
        def save_close_file(self):
            self.doc.Save() # to save to other file, the syntax is  self.doc.SaveAs(self.new_file_name)
            self.doc.Close(0, 1) # 0 = No change, 1 = original format
            self.w.Application.Quit() # To quit application
     
        def start_file(self):
            os.startfile(self.file_name)
     
    file_name=r"C:\python\test.docx"
    d=Office_work(file_name)
    d.replace_all("  "," ")
    d.replace_all("\r\r","\r")
    d.save_close_file()
    d.start_file()

Discussions similaires

  1. [WD-2010] Macro pour créer des fichiers Word à partir d'un fichier "maître"
    Par VinceVBA dans le forum VBA Word
    Réponses: 2
    Dernier message: 22/09/2013, 09h52
  2. Programmation pour manipuler des fichiers XML
    Par anolo40 dans le forum Débuter
    Réponses: 8
    Dernier message: 09/08/2011, 22h29
  3. bibliothèque python pour manipulation de fichiers RAW (DNG ou NEF Nikon)
    Par methos1435 dans le forum Bibliothèques tierces
    Réponses: 0
    Dernier message: 10/09/2009, 21h00
  4. Réponses: 15
    Dernier message: 11/07/2008, 15h21
  5. application pour concaténer des fichiers word.
    Par phoenixatareva dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 05/04/2007, 10h55

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