OpenXmlDoc Word:如何添加标记项目以进行索引?

时间:2018-02-09 08:11:55

标签: openxml openxml-sdk

我使用DocumentFormat.OpenXml以编程方式生成Word文档。

conceptual content for Word中,我找不到任何标记项目的提及,以便它们可以包含在文档索引中。我可以使用哪些课程?

我做了一个非常简单的文档,其中只包含This is an apple.,其中an apple标记为使用Main条目进行索引:apple。 Xml内容如下:

<w:p w:rsidR="000975CB" w:rsidRDefault="00B83C06" w:rsidP="007969F3">
 <w:r>
  <w:t xml:space="preserve">This is </w:t>
 </w:r>
 <w:r w:rsidR="007969F3"><w:t>an apple</w:t></w:r>
 <w:r><w:fldChar w:fldCharType="begin"/></w:r>
 <w:r><w:instrText xml:space="preserve"> XE "</w:instrText></w:r>
 <w:r w:rsidRPr="00246108"><w:instrText>apple</w:instrText></w:r>
 <w:r><w:instrText xml:space="preserve">" </w:instrText></w:r>
 <w:r><w:fldChar w:fldCharType="end"/></w:r>
 <w:bookmarkStart w:id="0" w:name="_GoBack"/>
 <w:bookmarkEnd w:id="0"/>
 <w:r><w:t>.</w:t></w:r>
</w:p>
<w:p w:rsidR="007969F3" w:rsidRPr="007969F3" w:rsidRDefault="007969F3" w:rsidP="007969F3"/>
...

1 个答案:

答案 0 :(得分:0)

标记为要编制索引的项目是 field code 类型的XEw:instrText)。字段代码必须位于complex field characterw:fldChar)内。

示例文档中的相关标记是:

<w:r><w:fldChar w:fldCharType="begin"/></w:r>
  <w:r><w:instrText xml:space="preserve"> XE "</w:instrText></w:r>
  <w:r><w:instrText>apple</w:instrText></w:r>
  <w:r><w:instrText xml:space="preserve">" </w:instrText></w:r>
<w:r><w:fldChar w:fldCharType="end"/></w:r>

上面显示的字段代码元素可以组合在一起:

<w:r><w:instrText>XE "apple"</w:instrText></w:r>

上面要生成的示例代码:

Tuple<Run,Run,Run> MarkEntryForIndex(string item)
{
    Run run0 = new Run();
     FieldChar fieldChar1 = new FieldChar() { FieldCharType = FieldCharValues.Begin };
     run0.Append(fieldChar1);
    Run run1 = new Run();
     FieldCode fieldCode1 = new FieldCode() { Space = SpaceProcessingModeValues.Preserve };
     fieldCode1.Text = " XE \"" + item + "\"";
     run1.Append(fieldCode1);
    Run run2 = new Run();
     FieldChar fieldChar2 = new FieldChar() { FieldCharType = FieldCharValues.End };
     run2.Append(fieldChar2);
    return Tuple.Create(run0, run1, run2);
}