我有一个非常简单的单词文档,内容控件(所有文本)。 我想遍历控件,用字典中的值填充它们。应该超级简单,但有些不对劲:
var myValues = new Dictionary<string, string>(); //And fill it
using (var wordDoc = WordprocessingDocument.Open(outputFile, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
foreach(SdtElement sdt in mainPart.Document.Descendants<SdtElement>())
{
SdtAlias alias = sdt.Descendants<SdtAlias>().FirstOrDefault();
if (alias != null)
{
string sdtTitle = alias.Val.Value;
sdt.??? = myValues[sdtTitle];
}
}
mainPart.Document.Save();
}
如何将我的价值写入文件? 我需要CustomXmlPart吗?
答案 0 :(得分:1)
如果您要做类似的事情,您需要在Sdt的SdtContent中写入合适的内容:段落或者运行或者tc等,具体取决于sdt的父元素。
另一种方法是将字典的内容放入CustomXml部分,并在每个引用相关字典元素的内容控件上设置数据绑定。然后Word将在首次打开docx时解析绑定(如果您希望用户使用其他内容打开它,这对您来说不是很好)。
答案 1 :(得分:0)
您可以使用此代码。
foreach (SdtElement sdt in mainPart.Document.Descendants<SdtElement>())
{
SdtAlias alias = sdt.Descendants<SdtAlias>().FirstOrDefault();
if (alias != null)
{
string sdtTitle = alias.Val.Value;
Text t = sdt.Descendants<Text>().First();
t.Text = "test";
}
}