确定两个表之间的距离Word Interop

时间:2016-03-29 15:00:39

标签: .net ms-word office-interop

我有Word文档,需要从中提取数据,包括表格。但是,在许多情况下,对于许多页面而言,一个表实际上已经创建为多个表。我正在使用Office 2016。

所以:

document.Tables[1] ; Table #1 - Page 1
document.Tables[2] ; Table #1 - Page 2
document.Tables[3] ; Table #2 - Page 2

我是否可以在这些表对象上使用某些属性来确定以下任何属性:

  • 表格中第一行/最后一行的页码
  • 表#1和表#2之间的文本是什么(即我可以查找换行符等)

我可以检索表的宽度/高度,但检查MSDN here的可用属性似乎没有任何明显的方法可以引用更具体的位置。

1 个答案:

答案 0 :(得分:1)

  1. Range对象具有Information属性,您可以使用参数来返回页码。如果这是C#,因为该语言不喜欢使用带属性的参数,所以它是get_Information方法。
  2. 这就像

    那样
    Word.Range rngRow1 = Table1.Rows[1].Range;
    int pgNr = rngRow1.get_Information(Word.WdInformation.wdActiveEndAdjustedPageNumber);
    
    1. 你可以崩溃一个Range,以便在该范围之后放置“焦点”。对于表格,将焦点放在表格之后,在下面的段落中。请注意,在最新版本的Word中,此段落是必需的,并带有一些表格格式属性。当然,可以有多个段落,有很多行......
    2. 在两个表之间获取Range的一种可能性如下所示。获得Range后,您可以分析它包含的内容(或者只是将其删除以合并两个表)。

      Word.Range rngBetweenTables = Table1.Range;
      object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
      rngBetweenTables.Collapse(ref oCollapseEnd);
      Word.Range rngStartOfNextTable = Table2.Range;
      object oCollapseStart = Word.WdCollapseDirection.wdCollapseStart;
      rngStartOfNextTable.Collapse(ref oCollapseStart);
      //Extends the Range to the specified position
      //Think of it like holding the Shift key, then clicking to extend a selection
      rngBetweenTables.End = rngStartOfNextTable.Start - 1;