Bonjour,
Depuis hier, j'essaie de remplir un document word (2007 et 2010) à l'aide de signets positionnés et de c# bien entendu. J'utilise les API openXML (au passage que je trouve puissante) et pour cela voici le code utilisé :
Mon fichier word est en fait constituer de zone de texte dans lesquelles j'insère des signets qui seront remplis via mon application c#. Je met en pièce jointe en plus la forme du fichier docx.
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 public static void AddTextToBookmark(string fileName, string textToAdd) { IDictionary<String, BookmarkStart> bookmarkMap = new Dictionary<String, BookmarkStart>(); using (var document = WordprocessingDocument.Open(fileName, true)) { var doc = document.MainDocumentPart; foreach (BookmarkStart bookmarkStart in doc.RootElement.Descendants<BookmarkStart>()) { bookmarkMap[bookmarkStart.Name] = bookmarkStart; } foreach (BookmarkStart bookmarkStart in bookmarkMap.Values) { if (bookmarkStart.Name == "date") { Text text = new Text(textToAdd); Run run = new Run(new RunProperties(new Bold())); run.Append(text); bookmarkStart.InsertAfterSelf(run);//.InsertAfterSelf(run); } } doc.Document.Save(); }
Le plus fabuleux, c'est que cela fonctionne parfaitement bien avec word 2007 mais word 2010 il m'est impossible de rajouter le texte au niveau du signet dans le document ????
Je ne suis pas spécialiste de word mais quelqu'un sait peut être pourquoi ce code se comporte différemment entre les 2 versions word ?
Auriez vous des idées ?
Partager