if (bookmarkStart.Name == bookMarkName) { Text text = new Text(textToAdd); Run run = new Run(new RunProperties(new Bold())); run.Append(text); bookmarkStart.Parent.InsertAfterSelf(run); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionpublic static void AddTextToBookmark1(string fileName, string textToAdd) { using (var document = WordprocessingDocument.Open(fileName, true)) { var doc = document.MainDocumentPart; var body = doc.Document.GetFirstChild<Body>(); //Récupérer tous les paragraphes du document, il ne faut pas utiliser Elements //car cette méthode ne récupère pas les paragraphes contenus dans des textes par exemple ou autre chose var paras = body.Descendants<Paragraph>(); foreach (var para in paras) { //Pour chaque paragraphe on récupère les bookMarks (les débuts et les fins) var bookMarkStarts = para.Elements<BookmarkStart>(); var bookMarkEnds = para.Elements<BookmarkEnd>(); foreach (var bookMarkStart in bookMarkStarts) { if (bookMarkStart.Name == "date") { //Récupérer l'id du bookMarkStart pour pouvoir récupérer le bookMarkFin correspondant var id = bookMarkStart.Id.Value; var bookmarkEnd = bookMarkEnds.First(i => i.Id.Value == id); var text = new Text(textToAdd); var run = new Run(new RunProperties(new Bold())); run.Append(text); //Insérer le run juste avant la balise bookMarkEnd para.InsertBefore(run, bookmarkEnd); } } } doc.Document.Save(); } }