我想使用OpenXML通过将给定文档作为模板来自动创建Word文档。该模板包含具有特殊语法(例如The cover must be an image
... «tagname[»
)的文本块,这些文本块为隐藏文本(在字体对话框中,“效果”部分中的“隐藏”复选框已激活) ),这样它们就不会在打印文档时出现。
根据«]tagname»
,我想用一些其他内容(例如,在tagname
中的内容{{1} }将用«today[»01/01/2000«]today»
代替),最好保留格式(例如,粗体,斜体或文本颜色)。
如何检索隐藏的文本部分?有没有一种简便的方法可以使用C#替换相应标签之间的所有内容?
答案 0 :(得分:1)
我不确定模板中的文本块到底是什么。相反,您可以在需要的位置使用“开发人员”选项中的“内容控制”,然后可以从内容控件的属性中为其命名。
今天将是内容控件的名称
在模板上拥有所有内容控件之后,您可以查找带有名称的特定内容控件并添加所需的新值。
以下是摘录,让您有个主意。
// Title is name of content control(today), value is what you want to add(1/01/2000)
private static void UpdateControl(WordprocessingDocument document, string title, string value)
{
MainDocumentPart mainPart = document.MainDocumentPart;
var sdtRuns = mainPart.Document.Descendants<SdtRun>()
.Where(run => run.SdtProperties.GetFirstChild<Tag>().Val.Value == title);
foreach (SdtRun sdtRun in sdtRuns)
{
sdtRun.Descendants<Text>().First().Text = value;
}
document.MainDocumentPart.Document.Save();
}