1

一个 rtf 文档由数据库应用程序生成,其中包含来自该数据库的信息。我创建了一个软件(C#,net framework 4.5)来获取数据,然后将其记录到 Excel 文件中。

我必须阅读 rtf 文件的页脚,这是我能做的。

但是,当软件访问页脚时,当页脚/页眉处于活动状态时,文档视图是相同的(当您在 Word 下双击页眉/页脚访问时效果相同。此操作操作在页眉上添加回车(Word 添加这个来输入一些东西),这个 \r 导致有额外的页面。

这里的代码:

Sections oSection = cGlobalVar.varWordApp.ActiveDocument.Sections;
HeaderFooter oFooter = oSection[1].Footers[WdHeaderFooterIndex.wdHeaderFooterFirstPage];

Range oRange = oFooter.Range.Tables[1].Range;//<= at this point, footer is accessible, the empty header of original document has a\r character, causing 2nd page to document that I don't want

strBuffer = oRange.Text;//<= information I need

oRange = oSection[1].Range.Tables[1].Range;//<= try to affect something else to oRange
oFooter = null;//<= try to null the object
oSection = null;//<= same as above

//cGlobalVar.varWordDoc.ActiveWindow.View.Type = WdViewType.wdPrintView;//<= try to use this to return to a normal state

我试图操纵 Word 来找到一些东西来回到我的原始文档(一页),但没有任何成功。

4

1 回答 1

0

清空对象不会清除其内容。如果要清除它,请更改范围对象的文本

oFooter.Range.Text = "";
oSection.Range.Text = "";

注意:这些对象有一个引用类型。这意味着该变量指向实际对象,该对象位于其他位置。如果将变量设置为 null,则只是失去了到对象的链接,但不会更改对象。请参阅我对 SO 问题的回答将类型引用类型设置为 null 不会影响复制的类型?


更新

我在 Word 中做了一个实验,使用 VBA 宏来读取页脚的表格范围,就像您在上面所做的那样。它不会改变单词的视图类型。

Sub Macro1()
    Dim oSection As Sections
    Dim oFooter As HeaderFooter
    Dim oRange As Range
    Dim strBuffer As String

    Set oSection = Application.ActiveDocument.Sections
    Set oFooter = oSection(1).Footers(WdHeaderFooterIndex.wdHeaderFooterPrimary)
    Set oRange = oFooter.Range.Tables(1).Range

    strBuffer = oRange.Text
    Debug.Print strBuffer
End Sub
于 2012-11-29T16:39:46.990 回答