Salut tout le monde !
J'essaie de suivre un tuto du labo microsoft mais j'ai un problème...
Le but de ce tuto est d'écrire dans des "contenu" word via du code c#.
J'ai donc ce code :
et
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 FileStream fs = null; Package pckg = null; //Ouvre le fichier Stream stmTemplate = new FileStream("C:\\test\\test.docx", FileMode.Open); BinaryReader brTemplate = new BinaryReader(stmTemplate); //Créé nouveau template Stream stmWrite = File.Create("C:\\test\\test2.docx"); BinaryWriter bwDocument = new BinaryWriter(stmWrite); bwDocument.Write(brTemplate.ReadBytes((int)stmTemplate.Length)); //ferme des documents bwDocument.Flush(); bwDocument.Close(); brTemplate.Close(); stmWrite.Close(); //chargement du docx fs = File.Open("C:\\test\\test2.docx", FileMode.Open, FileAccess.ReadWrite); pckg = Package.Open(fs, FileMode.Open, FileAccess.ReadWrite); //accès en lecture/écriture ModifyCustomXML(pckg);
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 protected void ModifyCustomXML(Package pckg) { //fichier qui contient la partie personnalisable cela peut changer en fonction des fichiers Uri customXmlUri = new Uri("/customXml/item1.xml", UriKind.Relative); //Permet de récupérer cette part PackagePart customXmlPart = pckg.GetPart(customXmlUri); //on charge le document dans un document linq XDocument xmldoc = XDocument.Load(XmlReader.Create(new StreamReader(customXmlPart.GetStream()))); //on parcourt le xml pour mettre les éléments foreach (XElement item in xmldoc.Descendants()) { switch (item.Name.LocalName) { //premier champ case "myName": item.Value = "monnom"; break; case "myPrenom": item.Value = "monprenom"; break; } } //on remet le pointeur au début customXmlPart.GetStream().Seek(0, SeekOrigin.Begin); //met le document XML dans le XMLWriter pour l'écriture après XmlWriter xmlwriter = XmlWriter.Create(customXmlPart.GetStream()); //ecriture du fichier xml xmldoc.WriteTo(xmlwriter); //on ferme les fichiers xmlwriter.Flush(); xmlwriter.Close(); }
Cela modifie bien les zones "contenu" du document word, par contre lorsque j'ouvre mon document avec word, je ne vois pas mon contenu apparaître...!
Des idées...?
Merci !
Partager