0

我正在使用 powershell 解析一个单词 2007。我想获取每个表格的标题并将其打印到屏幕上。

这是我想做的一个想法,但打印标题行不起作用。

$wd = New-Object -ComObject Word.Application
$wd.Visible = $true
$doc = $wd.Documents.Open($filename)
foreach ($table in $doc.Tables)
{
      #print table caption
      Write-Host $table.Caption.Range.Text #This does not work

      #Print Table contents
      foreach ($row in $table.Rows)
      {
          Write-Host $row.Range.Text
      }
}

是否可以获得与表格关联的标题?

4

1 回答 1

1

标题不是表格对象的属性,它们只是文本。不过,您可以执行以下操作来查找表格标题:

$style = $doc.Styles | ? { $_.NameLocal -eq 'Caption' }
$wd.Selection.Find.Style = $style
$wd.Selection.Find.Text  = 'Table'  # if table captions are labeled "Table"
$wd.Selection.Find.Execute()

由于通配符匹配在 Word 中是非贪婪的,因此您可能必须执行以下操作:

$style = $doc.Styles | ? { $_.NameLocal -eq 'Caption' }
$wd.Selection.Find.Style = $style
$wd.Selection.Find.Wrap  = 0
while ($wd.Selection.Find.Execute()) {
  if ($wd.Selection.Text -like 'Table*') {
    # do stuff
  }
  $wd.Selection.MoveRight()
}

以上仅按样式匹配,因此应选择整个标题。之后取消选择标题,因此MoveRight()下一次迭代将找到下一个匹配项,直到文档末尾,搜索停止 ( .Find.Wrap = 0)。

于 2013-07-08T23:53:03.450 回答