【问题标题】:powershell - MS-Word document parsing - Get a table's caption textpowershell - MS-Word 文档解析 - 获取表格的标题文本
【发布时间】:2013-07-06 08:29:09
【问题描述】:

我正在使用 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
      }
}

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

【问题讨论】:

    标签: powershell ms-word office-2007


    【解决方案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)。

    【讨论】:

    • 这会选择第一个标题中的文本“表格”。我将如何获取标题的所有文本并遍历所有标题。这将选择第一个标题中的文本“表格”。我将如何获取标题的所有文本并遍历所有标题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2011-12-29
    相关资源
    最近更新 更多