以编程方式向 Word 文档添加脚注(MS Office 2007 Word)






4.50/5 (2投票s)
这是一篇关于以编程方式为 Word 文档(MS Office 2007)添加脚注的文章。
引言
这是一篇关于以编程方式为 Word 文档添加脚注的文章。我在动态生成 Word 文档时遇到了这个需求,并且在实现它以及在网上查找帮助时遇到了很多困难。所以我想和大家分享我的经验,希望对您有所帮助。
我假设本文的读者应该知道如何查看 Word 文档(MS Office 2007)的存档。
实现
让我们假设 Word 文档中有一些文本,例如 *template.docx*
This is a sample text <FN1>
我假设 Word 文档已经包含此文本,并且标签 `<FN1>` 应该被上标“1”替换,并且页脚部分应该有一个相应的脚注。该文本在 *document.xml* 中的 XML 表示如下(应该采用这种形式)
<w:p w:rsidR="00F54CB0" w:rsidRDefault="0016203E">
<w:r>
<w:t>Sample Text with footnote </w:t>
</w:r>
<w:r>
<w:t><FN1></w:t>
</w:r>
</w:p>
请注意,标签 `<FN1>` 应该位于单独的 `<w:r>><w:t>` 节点中。我将此作为此逻辑工作的前提。(这可以在 *document.xml* 中手动完成,或者应以编程方式完成。)
其他先决条件
- *footernotes.xml* 应该是 Word 存档的一部分。
- *endnotes.xml* 应该是 Word 存档的一部分。
- *[Content_Types].xml* 应该反映上述两个 XML 文件。
- *word\_rels\document.xml.rels* 应该反映上述两个 XML 文件。
- *Styles.xml* 应包含对应于脚注字体样式的节点。
这些事情可以通过手动完成,或者通过打开 Word 文档并将页脚部分添加到文档中来完成。完成此操作后,上述所有更改都将自动完成。
我已附上示例代码以及一个示例文档(*template.docx*),其中只有一个 `<FN1>` 原始标签,并且满足上述所有先决条件。
添加脚注
以编程方式为文档添加脚注包括两个步骤:
- 将 *document.xml* 中的 `<FN1>` 标签替换为脚注节点(该节点包含上标 1,以及其对 *footernotes.xml* 的引用)。
- 将脚注文本节点添加到 *footernotes.xml* 中。
第一步是创建一个 `<w:r> <w:t>` 节点,该节点对应于 Word 脚注的语法。
这在代码的 `CreateFootNoteNode(..)` 方法中完成。
<w:r>
<w:rpr>
<w:rStyle w:val="FootnoteReference" />
<w:rpr>
<w:footnoteReference w:customMarkFollows="1" w:id="3" />
<w:t>1</w:t>
</w:r>
第二步是创建 *Footernotes.xml* 中与脚注相关的引用。此步骤创建一个 `<footnote>` 节点,该节点包含上标数字和实际的脚注。生成的节点应如下所示:
<w:footnote w:id="3">
<w:p>
<w:pPr>
<w:pStyle w:val="FootnoteText" />
</w:pPr>
<w:r>
<w:rpr>
<w:rStyle w:val="FootnoteReference" />
</w:rpr>
<w:t>1</w:t>
</w:r>
<w:r>
<w:t>This is a footnote</w:t>
</w:r>
</w:p>
</w:footnote>
创建好这两个节点后,脚注就准备好了。应保存 *document.xml* 和 *footernotes.xml*。
我在解决方案的 *bin/debug* 文件夹中放置了一个带有原始标签 `<fn1>` 的示例文档。程序执行一次后,文档将正确显示脚注。
注释
本节简要解释了以下文件中的先决条件:
- *[Content_Types].xml*:添加了以下部分:
- *word\_rels\document.xml.rels*:添加了以下部分:
<Override PartName="/word/endnotes.xml"
contentType="application/vnd.openxmlformats-officedocument.
wordprocessingml.endnotes+xml"/>
<Override PartName="/word/footnotes.xml"
ContentType="application/vnd.openxmlformats-officedocument.
wordprocessingml.footnotes+xml"/>
<Relationship Id="rId6"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes"
Target="endnotes.xml"/>
<Relationship Id="rId7"
Type="http://schemas.openxmlformats.org/
officeDocument/2006/relationships/footnotes"
Target="footnotes.xml"/>
我在此处上传了一个示例应用程序这里,其中完成了在 Word 文档中动态创建脚注的整个操作。它包含一个文件“*sample template\template.docx*”。此文件必须放在应用程序的 *bin/debug* 文件夹中。执行之前,请查看文档。它将包含原始脚注占位符。程序执行后,占位符将被脚注编号替换,并且可以在文档的页脚部分看到相应的脚注。