|
![]() |
#1 |
Участник
|
Еще вопрос.
Как имея имя метки (EDT Bookmark) получить DocumentFormat.OpenXml.Wordprocessing.BookmarkStart ? Что-то типа: X++: public static DocumentFormat.OpenXml.Wordprocessing.BookmarkStart bookmark2BookmarkStart( Bookmark _bookmark) { DocumentFormat.OpenXml.Wordprocessing.BookmarkStart ret; DocumentFormat.OpenXml.StringValue stringValue; ; stringValue = OXML_RU::setStringValue(_bookmark); ret = new DocumentFormat.OpenXml.Wordprocessing.BookmarkStart(); ret.set_Id(stringValue); ret.set_Name(stringValue); return ret; } |
|
![]() |
#2 |
Участник
|
Судя по ссылкам вроде https://stackoverflow.com/questions/...g-open-xml-sdk надо в коллекции типа doc.MainDocumentPart.RootElement.Descendants<BookmarkStart> найти элемент с нужным Name
Код: Public static void ReplaceBookmarkParagraphs(WordprocessingDocument doc, string bookmark, string text) { //Find all Paragraph with 'BookmarkStart' var t = (from el in doc.MainDocumentPart.RootElement.Descendants<BookmarkStart>() where (el.Name == bookmark) && (el.NextSibling<Run>() != null) select el).First(); //Take ID value var val = t.Id.Value; //Find the next sibling 'text' OpenXmlElement next = t.NextSibling<Run>(); //Set text value next.GetFirstChild<Text>().Text = text; //Delete all bookmarkEnd node, until the same ID deleteElement(next.GetFirstChild<Text>().Parent, next.GetFirstChild<Text>().NextSibling(), val, true); } |
|
|
За это сообщение автора поблагодарили: decoder (1). |
Теги |
generic |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|