使用Powershell在Word中设置表格列

时间:2018-10-17 13:10:05

标签: powershell ms-word

Im建立在Powershell脚本上,该脚本收集一组数据以将其填充到Word文档中。 这是我第一次将Powershell与Word结合使用。关于此的信息很少,因此,如果有人知道一个好的资料来源,我将不胜感激!

目前,我正忙着格式化表格。我要编辑列的宽度。

我尝试了以下操作:

    $DocPath = "E:\Temp\Registry\EXCEL_ALLE\Version_AllFromExcel_Aktuell"
    $Word = New-Object -ComObject Word.Application
    $Word.Visible = $True
    $Document = $Word.Documents.Add($DocPath + "\IIS Application Pool.dotm")
    $Selection = $Word.Selection
    $Range = @($Selection.Paragraphs)[-1].Range

    $RowsCount = $hash.Count +1
    $ColumnCount = $Columns.Count
    $Table = $Selection.Tables.add(
    $Selection.Range,($RowsCount),2,

   [Microsoft.Office.Interop.Word.WdDefaultTableBehavior]::wdWord9TableBehavior,


   $Table.cell($Row,1).PreferredWidthType = 1
   $Table.cell($Row,1).Width = 400
   $Table.Row(1,1).Width = 400
   $Table.Width = 400
   $Table.Column(1).Width = 400

但是它不起作用,.cell命令只能编辑1个单元格(当然是:()。 我尝试过的所有其他组合都会使我像

一样失败
  

“在该对象上找不到属性'Width'。”

  

方法调用失败,因为[System .__ ComObject]不包含   一种名为“列”的方法。

我如何设置某个列的With?

1 个答案:

答案 0 :(得分:2)

如果仔细阅读Tables.Add的文档,您会看到最后一个参数AutoFitBehavior成为枚举WdAutoFitBehavior的成员。当前三个可用值:

  • wdAutoFitContent
  • wdAutoFitFixed
  • wdAutoFitWindow

您需要第二个wdAutoFitFixed来设置确切的列宽。

请注意,您的代码使用Table.Column(1)-应该是Table.Columns(1)-您在列 s 中缺少了s

Column.Width属性期望该值在 Points 中。如果要指定厘米或英寸,则需要Word.Application的转换功能,例如CentimetersToPointsInchesToPoints。例如,在您的编程语言中,它类似于以下内容。

$Table.Columns(1).Width = $Word.CentimetersToPoints(10)