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?
答案 0 :(得分:2)
如果仔细阅读Tables.Add
的文档,您会看到最后一个参数AutoFitBehavior
成为枚举WdAutoFitBehavior
的成员。当前三个可用值:
您需要第二个wdAutoFitFixed
来设置确切的列宽。
请注意,您的代码使用Table.Column(1)
-应该是Table.Columns(1)
-您在列 s 中缺少了s
。
Column.Width
属性期望该值在 Points 中。如果要指定厘米或英寸,则需要Word.Application
的转换功能,例如CentimetersToPoints
或InchesToPoints
。例如,在您的编程语言中,它类似于以下内容。
$Table.Columns(1).Width = $Word.CentimetersToPoints(10)