Salut à tous,
je voudrais fusionner plusieurs docm en un seul docm mais entre chaque docm que j'ajoute je place un titre. ex:
Titre 1
contenu du docm
Titre 2
contenu du docm
...
Merci pour l'aide qu'on pourra me donner ;-)
Salut à tous,
je voudrais fusionner plusieurs docm en un seul docm mais entre chaque docm que j'ajoute je place un titre. ex:
Titre 1
contenu du docm
Titre 2
contenu du docm
...
Merci pour l'aide qu'on pourra me donner ;-)
J'ai trouvé une solution que voila :
ici je boucle sur les fichiers que je veux fusionner
et ici je fusionne les documents word docx,docm
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 var fileTarget = Guid.NewGuid() + ".docx"; Directory.SetCurrentDirectory("c:\");//pour l'exemple XNamespace w = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; XNamespace r = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"; using (WordprocessingDocument mainDoc = WordprocessingDocument.Open(fileTarget, true)) { MainDocumentPart mainPart = mainDoc.MainDocumentPart; var i = streamColl.Count(); foreach (var stream in streamColl) { MergeStream(w, r, mainDoc, mainPart, i, stream.Value); i--; } mainDoc.Close(); }
voila si ce code peut aider quelqu'un j'en serai heureux.
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 private static void MergeStream(XNamespace w, XNamespace r, WordprocessingDocument mainDoc, MainDocumentPart mainPart, int i, Stream stream) { var altChunkId = string.Format("AltChunkId{0}", i.ToString()); AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart( "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml", altChunkId); chunk.FeedData(stream); XElement altChunk = new XElement(w + "altChunk", new XAttribute(r + "id", altChunkId)); XDocument Xdoc; using (Stream str = mainDoc.MainDocumentPart.GetStream()) { using (XmlReader xr = XmlReader.Create(str)) Xdoc = XDocument.Load(xr); } Xdoc.Root.Element(w + "body").Elements(w + "p").Last().AddAfterSelf(altChunk); using (Stream str = mainDoc.MainDocumentPart.GetStream(FileMode.Create, FileAccess.Write)) { using (XmlWriter xw = XmlWriter.Create(str)) Xdoc.Save(xw); } }
Partager