快被这个问题发疯了。我确信它是如此简单,我只是想念它,但我无法终生了解如何使用 C# 中的 OpenXml SDK v2.0 更改 Word 2007 中内容控件的内容。
我创建了一个带有纯文本内容控件的 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();
}
这确实会更改文本,但我会丢失所有格式。有谁知道我该怎么做?