OpenXmlDoc Word:如何添加标记项目以进行索引?
OpenXmlDoc Word: How to add Mark an item for indexing?
我正在使用 DocumentFormat.OpenXml 以编程方式生成 Word 文档。
在 conceptual content for Word 中,我找不到任何关于标记项目以便将它们包含在文档索引中的提及。 类 我可以使用什么?
我做了一个非常简单的文档,其中仅包含 This is an apple.
,其中 an apple
标记为索引,主要条目: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"/>
...
标记为索引的项目是 field code (w:instrText
) of type XE. A field code has to be inside a complex field character (w: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);
}
我正在使用 DocumentFormat.OpenXml 以编程方式生成 Word 文档。
在 conceptual content for Word 中,我找不到任何关于标记项目以便将它们包含在文档索引中的提及。 类 我可以使用什么?
我做了一个非常简单的文档,其中仅包含 This is an apple.
,其中 an apple
标记为索引,主要条目: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"/>
...
标记为索引的项目是 field code (w:instrText
) of type XE. A field code has to be inside a complex field character (w: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);
}