我正在尝试使用 openxml sdk 2.5 获取 word 文档模板的内部结构。
关键是,当我在添加 docproperty 的地方调用 docpart 的 innertext 属性时,它总是添加一个附加的“错误!未知文档属性名称”。细绳...
/// <summary>
/// Examines a word document to create the data structure of autotexts
/// </summary>
/// <param name="document">Word document to be processed</param>
/// <returns>OpenXMLAutoTextContainer</returns>
public static OpenXMLAutotextContainer GetAutotextContainer(WordprocessingDocument document)
{
OpenXMLAutotextContainer result = null;
try
{
result = new OpenXMLAutotextContainer()
{
Name = document.ExtendedFilePropertiesPart.Properties.Template.InnerText
};
result.OpenXMLAutoTextList = new Dictionary<string, OpenXMLAutotext>();
List<CIProField> CIProFields = null;
foreach (DocPart _docPart in document.MainDocumentPart.GlossaryDocumentPart.GlossaryDocument.DocParts)
{
if (_docPart.DocPartProperties.Category.Gallery.Val == "autoTxt")
{
CIProFields = new List<CIProField>();
result.OpenXMLAutoTextList.Add(
_docPart.DocPartProperties.DocPartName.Val,
new OpenXMLAutotext()
{
Name = _docPart.DocPartProperties.DocPartName.Val,
Content = _docPart.DocPartBody.InnerText,
CIProFields = CIProFields
});
}
}
}
catch (Exception ex)
{
OpenXMLCustomException e = new OpenXMLCustomException(ex, "GetAutotextContainer");
throw e;
}
return result;
}
}
OpenXML SDK 输出:
<w:docPart xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:docPartPr>
<w:name w:val="W_DocProp01" />
<w:style w:val="Normal" />
<w:category>
<w:name w:val="General" />
<w:gallery w:val="autoTxt" />
</w:category>
<w:behaviors>
<w:behavior w:val="content" />
</w:behaviors>
<w:guid w:val="{12809B83-5021-4211-A70D-EA3447274A83}" />
</w:docPartPr>
<w:docPartBody>
<w:p w:rsidRPr="001E1D2D" w:rsidR="00F6185D" w:rsidP="001E1D2D" w:rsidRDefault="00F6185D">
<w:pPr>
<w:rPr>
<w:lang w:val="es-ES" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:lang w:val="es-ES" />
</w:rPr>
<w:fldChar w:fldCharType="begin" />
</w:r>
<w:r>
<w:rPr>
<w:lang w:val="es-ES" />
</w:rPr>
<w:instrText>DOCPROPERTY "Test_W_DocProp01"</w:instrText>
</w:r>
<w:r>
<w:rPr>
<w:lang w:val="es-ES" />
</w:rPr>
<w:fldChar w:fldCharType="separate" />
</w:r>
<w:r>
<w:rPr>
<w:b />
<w:bCs />
<w:lang w:val="en-US" />
</w:rPr>
<w:t>Error! Unknown document property name.</w:t>
</w:r>
<w:r>
<w:rPr>
<w:lang w:val="es-ES" />
</w:rPr>
<w:fldChar w:fldCharType="end" />
</w:r>
</w:p>
<w:p w:rsidR="00000000" w:rsidRDefault="00F6185D" />
</w:docPartBody>
</w:docPart>