【发布时间】:2010-01-15 23:51:25
【问题描述】:
快被这个问题发疯了。我确信它是如此简单,我只是想念它,但我终生无法找到如何使用 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();
}
这确实会更改文本,但我会丢失所有格式。有谁知道我该怎么做?
【问题讨论】: