使用Powershell在Word中设置表列



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

目前,我坚持格式化我的表格。我想编辑列的宽度。

我尝试了以下方法:

$DocPath = "E:TempRegistryEXCEL_ALLEVersion_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 个单元格(当然是:((。 我尝试过的所有其他组合都让我失败了,就像

"在此对象上找不到属性'宽度'。">

方法调用失败,因为 [System.__ComObject] 不包含 名为"列"的方法。

如何设置某个列的 with?

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

  • wdAutoFitContent
  • wdAutoFitFixed
  • wdAutoFitWindow

您需要第二个wdAutoFitFixed,以便设置精确的列宽。

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

Column.Width属性要求该值以为单位。如果要指定厘米或英寸,则需要Word.Application的转换函数,例如CentimetersToPointsInchesToPoints.例如,在您的编程语言中,它看起来像下面这样。

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

最新更新