Bonjour,

Je souhaite modifier un document word préformater (c'est à dir remplacer des variable prédéfinit dans le document de base).

J'ai suivi le tuto suivant :

http://badger.developpez.com/tutorie...-word-openxml/

J'arrive avec ce morceaux de code, à ouvrir, lire mon document et le modifier grace à la variable InnerText, mais a pas à l'enregistrer correctement lorsque jessaie d'ouvrir le document enregistrer, word me dit qu'il est corrompu.

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
 
string docWord = @"C:\Users\Nicolas\Documents\test.docx";
 
            //overture du package en lecture/écriture
            Package officePackage = Package.Open(docWord, FileMode.Open, FileAccess.ReadWrite);
 
            //type de contenu pour la partie principale
            const String officeDocRelType = @"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument";
 
            PackagePart mainPart = null;
            Uri documentUri = null;
            //on récupère la partie contenant les propriétés
            foreach (PackageRelationship relationship in officePackage.GetRelationshipsByType(officeDocRelType))
            {
                // Il n'y a qu'une seule partie de type partType dans le package
                documentUri = PackUriHelper.ResolvePartUri(new Uri("/", UriKind.Relative), relationship.TargetUri);
                mainPart = officePackage.GetPart(documentUri);
                break;
            }
            if (mainPart != null)
            {
                //chargement de la partie dans un XmlDocument
                XmlDocument doc = new XmlDocument();
                string test = "";
                doc.Load(mainPart.GetStream());
 
                test = mainPart.ContentType;
                //sensible à la casse
                if (doc.DocumentElement.InnerText.Contains("%%id_evt"))
                {
                    int i = 0;
                    doc.DocumentElement.InnerText = modifierVariable(Ta, Act, doc.DocumentElement.InnerText);
                    //MessageBox.Show("Texte trouvé dans le document");
                }
                officePackage.Close();
                doc.Save(docWord);
            }
Visiblement je ne devrais pas l'enregistrer via doc, mais plutot via mainPart, enfin changer le contenu de mainPart, mais j'ai pas limpression que cela soit possible. Je bloque.

Dans l'attente de votre aide. Cordialement SiOuZ