我正在编写一个应用程序,该应用程序应使用DocumentFormat.OpenXML SDK将数据写入表单字模板中的字段。但我无法在SDK的文档对象中找到存储表单字段的属性。
我试过这段代码:
using (WordprocessingDocument document = WordprocessingDocument.Open("Path/To/document.dotx", true))
{
document.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
MainDocumentPart mainPart = document.MainDocumentPart;
var fields = mainPart.Document.Body.Descendants<FormFieldData>();
foreach (var field in fields)
{
if (field.GetType() == typeof(FormFieldData))
{
if (field.LocalName == "Name")
{
Console.WriteLine("Hi!");
}
}
}
}
但是字段始终为空。
答案 0 :(得分:2)
您可以通过替换此行来完成此操作:
if (field.LocalName == "Name")
这一个:
if (((FormFieldName)field.FirstChild).Val.InnerText.Equals("Name"))
此外,您可以使用以下代码使用另一个SO答案中提供的函数SetFormFieldValue
在表单字段元素中放置一个文本:
if (((FormFieldName)field.FirstChild).Val.InnerText.Equals("Name"))
{
TextInput text = field.Descendants<TextInput>().First();
SetFormFieldValue(text, "Put some text inside the field");
}
有关SetFormFieldValue
答案 1 :(得分:0)
您的文档是否可能使用自定义属性填写表单字段?试着看看this MSDN page,它解释了如何阅读和操作自定义属性。