65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (2投票s)

2008年10月3日

CPOL

3分钟阅读

viewsIcon

42380

downloadIcon

654

这是一篇关于以编程方式为 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* 中手动完成,或者应以编程方式完成。)

其他先决条件

  1. *footernotes.xml* 应该是 Word 存档的一部分。
  2. *endnotes.xml* 应该是 Word 存档的一部分。
  3. *[Content_Types].xml* 应该反映上述两个 XML 文件。
  4. *word\_rels\document.xml.rels* 应该反映上述两个 XML 文件。
  5. *Styles.xml* 应包含对应于脚注字体样式的节点。

这些事情可以通过手动完成,或者通过打开 Word 文档并将页脚部分添加到文档中来完成。完成此操作后,上述所有更改都将自动完成。

我已附上示例代码以及一个示例文档(*template.docx*),其中只有一个 `<FN1>` 原始标签,并且满足上述所有先决条件。

添加脚注

以编程方式为文档添加脚注包括两个步骤:

  1. 将 *document.xml* 中的 `<FN1>` 标签替换为脚注节点(该节点包含上标 1,以及其对 *footernotes.xml* 的引用)。
  2. 将脚注文本节点添加到 *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>` 的示例文档。程序执行一次后,文档将正确显示脚注。

注释

本节简要解释了以下文件中的先决条件:

  1. *[Content_Types].xml*:添加了以下部分:
  2. <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"/>
  3. *word\_rels\document.xml.rels*:添加了以下部分:
  4. <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* 文件夹中。执行之前,请查看文档。它将包含原始脚注占位符。程序执行后,占位符将被脚注编号替换,并且可以在文档的页脚部分看到相应的脚注。

© . All rights reserved.