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
的转换函数,例如CentimetersToPoints
或InchesToPoints
.例如,在您的编程语言中,它看起来像下面这样。
$Table.Columns(1).Width = $Word.CentimetersToPoints(10)