Схожу с ума от этой проблемы. Я уверен, что это так просто, я просто скучаю по нему, но я не могу понять, как изменить содержимое элемента управления содержимым в Word 2007 с помощью OpenXml SDK v2.0 в C #.
Я создал документ Word с контролем содержимого в виде простого текста. Тег для этого элемента управления - «FirstName». В коде я хотел бы открыть документ Word, найти этот элемент управления содержимым и изменить содержимое без потери форматирования.
Решение, которое я наконец-то нашел, заключалось в том, чтобы найти элемент управления контентом, вставить прогон после него, а затем удалить элемент управления контентом как таковой:
using (WordprocessingDocument wordProcessingDocument = WordprocessingDocument.Open(filePath, true)) {
MainDocumentPart mainDocumentPart = wordProcessingDocument.MainDocumentPart;
SdtRun sdtRun = mainDocumentPart.Document.Descendants<SdtRun>()
.Where(run => run.SdtProperties.GetFirstChild<Tag>().Val == "FirstName").Single();
if (sdtRun != null) {
sdtRun.Parent.InsertAfter(new Run(new Text("John")), sdtRun);
sdtRun.Remove();
}
Это меняет текст, но я теряю все форматирование. Кто-нибудь знает, как я могу это сделать?