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

VB.NET Discussion :

Créer et écrire dans un fichier word 2010: application console


Sujet :

VB.NET

  1. #1
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Créer et écrire dans un fichier word 2010: application console
    Bonjour,

    je suis en galère depuis quelques temps avec cette solution. Je souhaite lire un fichier XML pour l'écrire dans un fichier word. Sachant que je dois créer un nouveau fichie a chaque fois que j'exécute mon programme.

    voici mon code:

    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
     
    Private Sub OpenXML()
            Dim sDateToDay As String = Date.Today.ToString("ddMMyyyy")
            Dim s_chemin As String = "C:\Users\m.bignon\Documents\ADEME"
            Dim monStreamReader As System.IO.StreamReader = New System.IO.StreamReader(s_chemin & "\Referentiel_ADEME.xml")
            Dim monStreamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(s_chemin & "\Model_Referentiel_Pricipal_ADEME_" & sDateToDay & ".dotm", False)
            'Lecture de toutes les lignes et affichage de chacune sur la page                           
            Dim xmlDoc As XmlDocument = New XmlDocument()
            xmlDoc.Load(s_chemin & "\Referentiel_ADEME.xml")
            Dim configElements As XmlNodeList = xmlDoc.GetElementsByTagName("Metadonnes")
            Dim noeud As XmlNode
            Dim NomGroupe As String = ""
            Dim GroupeFormate As String = ""
            Dim sTitre As String = ""
            'On vas afficher les info des éléments                
            For Each noeud In configElements
                'On récup les info des balises                    
                For Each noeudEnf In noeud.ChildNodes
                    Select Case noeudEnf.LocalName
                        Case "Groupe"
                            If NomGroupe <> noeudEnf.InnerText Then
                                NomGroupe = noeudEnf.InnerText
                                monStreamWriter.WriteLine("")
                                'Ecrire dans le fichier en gras et souligné
                                GroupeFormate = NomGroupe.ToUpper()
                                monStreamWriter.WriteLine(GroupeFormate)
                            End If
                        Case "Titre"
                            sTitre = noeudEnf.InnerText
                            monStreamWriter.WriteLine(sTitre)
                    End Select
                Next
            Next
            'Fermeture du StreamReader            
            monStreamReader.Close()
            monStreamWriter.Flush()
            monStreamWriter.Close()
            monStreamWriter.Close()
        End Sub
    Mon souci c'est que mon fichier ne s'ouvre pas, il met une erreur comme quoi mon fichier est endommagé, j'ouvre le fichier avec notePad++ et là surprise mes données sont bien écrite. Pouvez-vous m'aider ?

    cordialement,
    un galèrien

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut

    Mon souci c'est que mon fichier ne s'ouvre pas, il met une erreur comme quoi mon fichier est endommagé,
    si tu essaies d'ouvrir un autre fichier xml as tu la meme erreur ?

  3. #3
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut
    excuse-moi, je me suis mal expliqué. En fait, ce n'est pas le fichier XML qui ne s'ouvre pas, lui tout va bien, c'est mon fichier .dotm donc mon model word que je créée à partir de mon XML qui ne s'ouvre pas correctement mais qd je l'ouvre avec notepad++ les données y sont.

  4. #4
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut
    Mon fichier dotm possède une en-tete et un pied de page, j'ai donc modifié ma fonction ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim monStreamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(s_chemin & "\Referentiel ADEME.dotm", True)
    ceci afin de garder mon pied de page et mon en-tete. Mais j'ai toujours l'erreur qui me dit que le fichier est corrompu lrsque je l'ouvre avec word, mais pas qd je l'ouvre avec notepad++

  5. #5
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut
    j'ai radicalement changé de philosophie et ça fonctionne:

    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
     
     Private Sub OpenXMLandCreateDocReferentiel()
            Dim sDateToDay As String = Date.Today.ToString("ddMMyyyy")
            Dim oW As Object
            Dim Document As Object
            Dim s_chemin As String = "C:\Users\m.bignon\Documents\ADEME"
            Dim ReaderXML As System.IO.StreamReader = New System.IO.StreamReader(s_chemin & "\Referentiel_ADEME.xml")
            Dim countGroup As Integer
     
            countGroup = 0
            'Lecture de toutes les lignes et affichage de chacune sur la page                           
            Dim xmlDoc As XmlDocument = New XmlDocument()
            xmlDoc.Load(s_chemin & "\Referentiel_ADEME.xml")
            Dim configElements As XmlNodeList = xmlDoc.GetElementsByTagName("Metadonnes")
            Dim noeud As XmlNode
            Dim NomGroupe As String = ""
            Dim sTitre As String = ""
            oW = CreateObject("Word.Application")
            oW.Visible = True
            Document = oW.Documents.Open(s_chemin & "\Referentiel ADEME.dotm", ReadOnly:=False)
     
            'On vas afficher les info des éléments                
            For Each noeud In configElements
                'On récup les info des balises                    
                For Each noeudEnf In noeud.ChildNodes
                    Select Case noeudEnf.LocalName
                        Case "Groupe"
                            If NomGroupe <> noeudEnf.InnerText And countGroup = 0 Then
                                NomGroupe = noeudEnf.InnerText
                                countGroup = 1
                                With Document
                                    .lGroupe1.Caption = NomGroupe
                                End With
                            ElseIf NomGroupe <> noeudEnf.InnerText And countGroup = 1 Then
                                NomGroupe = noeudEnf.InnerText
                                countGroup = 2
                                With Document
                                    .lGroupe2.Caption = NomGroupe
                                End With
                            ElseIf NomGroupe <> noeudEnf.InnerText And countGroup = 2 Then
                                NomGroupe = noeudEnf.InnerText
                                countGroup = 3
                                With Document
                                    .lGroupe3.Caption = NomGroupe
                                End With
                            ElseIf NomGroupe <> noeudEnf.InnerText And countGroup = 3 Then
                                NomGroupe = noeudEnf.InnerText
                                countGroup = 4
                                With Document
                                    .lGroupe4.Caption = NomGroupe
                                End With
                            End If
                        Case "Titre"
                            If countGroup = 1 Then
                                sTitre = noeudEnf.InnerText
                                With Document
                                    .lbGroupe1.AddItem(sTitre)
                                End With
                            ElseIf countGroup = 2 Then
                                sTitre = noeudEnf.InnerText
                                With Document
                                    .lbGroupe2.AddItem(sTitre)
                                End With
                            ElseIf countGroup = 3 Then
                                sTitre = noeudEnf.InnerText
                                With Document
                                    .lbGroupe3.AddItem(sTitre)
                                End With
                            ElseIf countGroup = 4 Then
                                sTitre = noeudEnf.InnerText
                                With Document
                                    .lbGroupe4.AddItem(sTitre)
                                End With
                            End If
                    End Select
                Next
            Next
            Document.SaveAs(s_chemin & "\Referentiel ADEME_" & sDateToDay & ".dotm")
            oW = Nothing
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer et écrire dans un fichier.txt
    Par Furius dans le forum VBScript
    Réponses: 11
    Dernier message: 16/05/2016, 13h27
  2. [VB.NET 2010] écrire dans un fichier word
    Par pepito11 dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/01/2011, 20h28
  3. [Fichiers] Créer et écrire dans un fichier .txt
    Par maserati dans le forum C++
    Réponses: 3
    Dernier message: 30/11/2008, 22h02
  4. Créer et écrire dans un fichier
    Par Sinon dans le forum Linux
    Réponses: 2
    Dernier message: 15/01/2007, 10h55
  5. [COM] Écrire dans un fichier word
    Par khaled.mtibaa dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 19/04/2006, 13h36

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