确定两个表之间的距离 Word Interop
Determining Distance Between Two Tables Word Interop
我有需要从中提取数据的 Word 文档,全是 table。然而,在许多情况下,持续多页的 table 实际上已创建为多个 table。我正在使用 Office 2016。
所以:
document.Tables[1] ; Table #1 - Page 1
document.Tables[2] ; Table #1 - Page 2
document.Tables[3] ; Table #2 - Page 2
我可以在这些 table 对象上使用一些属性来确定以下任何一项:
- table
第一行/最后一行的页码
- table #1 和 table #2 之间的文本是什么(也就是说,我可以查找换行符等)
我可以检索 table 的 width/height,但是在 MSDN here 检查可用属性似乎没有任何明显的方法来引用更具体的位置。
Range
对象有一个 Information
属性,您将其作为参数提供给 return 页码。如果这是 C#,因为该语言不 "like" 使用带属性的参数,所以它是 get_Information 方法。
所以类似于
Word.Range rngRow1 = Table1.Rows[1].Range;
int pgNr = rngRow1.get_Information(Word.WdInformation.wdActiveEndAdjustedPageNumber);
- 您可以 折叠 一个
Range
以便将 "focus" 放在该范围之后。在 table 的情况下,焦点将紧跟在下一段中的 table 之后。请注意,在大多数最新版本的 Word 中,此段落是必需的,并带有一些 table 格式属性。当然也可以不止一段,多行...
获取两个 table 之间的范围的一种可能性如下所示。一旦你有了 Range
,你就可以分析它包含的内容(或者只是删除它以合并两个 table)。
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;
我有需要从中提取数据的 Word 文档,全是 table。然而,在许多情况下,持续多页的 table 实际上已创建为多个 table。我正在使用 Office 2016。
所以:
document.Tables[1] ; Table #1 - Page 1
document.Tables[2] ; Table #1 - Page 2
document.Tables[3] ; Table #2 - Page 2
我可以在这些 table 对象上使用一些属性来确定以下任何一项:
- table 第一行/最后一行的页码
- table #1 和 table #2 之间的文本是什么(也就是说,我可以查找换行符等)
我可以检索 table 的 width/height,但是在 MSDN here 检查可用属性似乎没有任何明显的方法来引用更具体的位置。
Range
对象有一个Information
属性,您将其作为参数提供给 return 页码。如果这是 C#,因为该语言不 "like" 使用带属性的参数,所以它是 get_Information 方法。
所以类似于
Word.Range rngRow1 = Table1.Rows[1].Range;
int pgNr = rngRow1.get_Information(Word.WdInformation.wdActiveEndAdjustedPageNumber);
- 您可以 折叠 一个
Range
以便将 "focus" 放在该范围之后。在 table 的情况下,焦点将紧跟在下一段中的 table 之后。请注意,在大多数最新版本的 Word 中,此段落是必需的,并带有一些 table 格式属性。当然也可以不止一段,多行...
获取两个 table 之间的范围的一种可能性如下所示。一旦你有了 Range
,你就可以分析它包含的内容(或者只是删除它以合并两个 table)。
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;