使用Powershell在Word中设置表列

使用Powershell在Word中设置表列,powershell,ms-word,Powershell,Ms Word,我正在构建一个Powershell脚本,该脚本收集一组数据并将其填充到word文档中。 这是我第一次将Powershell与Word结合使用。关于这方面的信息很少,所以如果有人知道一个好的来源,我将不胜感激 目前我正忙于格式化我的表格。我想编辑列的宽度 我试过以下方法: $DocPath = "E:\Temp\Registry\EXCEL_ALLE\Version_AllFromExcel_Aktuell" $Word = New-Object -ComObject Word.A

我正在构建一个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.\u ComObject]不包含 名为“Column”的方法


如何设置某一列的With?

如果您阅读了
表的文档。请仔细添加
,您将看到最后一个参数
AutoFitBehavior
,包含枚举
WdAutoFitBehavior
的成员。当前可用的三个值:

  • wdAutoFitContent
  • 自动安装
  • WDAutofit窗口
为了设置精确的列宽,您需要第二个参数,
wdautofitfix

请注意,您的代码使用了
表。列(1)
-这应该是:
表。列(1)
-您缺少列s中的
s

列.Width
属性要求值以点为单位。如果要指定厘米或英寸,则需要
字.Application
的转换函数,例如
厘米停止点
英寸停止点
。在编程语言中,它如下所示

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

如果您阅读
表的文档。请仔细添加
,您将看到最后一个参数
AutoFitBehavior
,它是枚举
WdAutoFitBehavior
的成员。三个当前可用的值:

  • wdAutoFitContent
  • 自动安装
  • WDAutofit窗口
为了设置精确的列宽,您需要第二个参数,
wdautofitfix

请注意,您的代码使用了
表。列(1)
-这应该是:
表。列(1)
-您缺少列s中的
s

列.Width
属性要求值以点为单位。如果要指定厘米或英寸,则需要
字.Application
的转换函数,例如
厘米停止点
英寸停止点
。在编程语言中,它如下所示

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

但是..你放在桌子上的
wdAutoFitContent
难道不起作用吗?西奥,再次感谢;)我想我必须删除这个,我编辑了我的帖子。。它希望拉伸表格,以便使用整个页面宽度。否则它看起来不太好…我看到您删除了以下行
[Microsoft.Office.Interop.Word.WdAutoFitBehavior]::wdAutoFitContent
。。你试过
wdAutoFitWindow
吗?谢谢,这几乎就是我想要的!但是,没有办法具体说明具体的数字吗?因为像这样,两行都相当大,我更愿意让第一列的宽度变小,第二列应该得到剩余的空间..但是。。您在桌上设置的
wdAutoFitContent
难道不起作用吗?西奥,再次感谢;)我想我必须删除这个,我编辑了我的帖子。。它希望拉伸表格,以便使用整个页面宽度。否则它看起来不太好…我看到您删除了以下行
[Microsoft.Office.Interop.Word.WdAutoFitBehavior]::wdAutoFitContent
。。你试过
wdAutoFitWindow
吗?谢谢,这几乎就是我想要的!但是,没有办法具体说明具体的数字吗?因为像这样,两行都很大,我更愿意让第一列的宽度变小,第二列应该得到剩余的空间。非常感谢cindy。顺便问一下,您是否讨论过此文档@卢卡斯,如果你喜欢阅读C#,那么这个链接是可能的。不过,我主要使用VBA引用,它的语法可能更接近Powershell所使用的语法。请注意,该网站速度非常慢,可能是因为他们更喜欢人们使用新的JSAPI(显示速度更快),并试图阻止使用COM对象模型。。。另一个选项是使用Word应用程序(Alt+F11)中的VBA编辑器和对象浏览器(F2),单击术语,然后转到VBA帮助主题。非常感谢cindy。顺便问一下,您是否讨论过此文档@卢卡斯,如果你喜欢阅读C#,那么这个链接是可能的。不过,我主要使用VBA引用,它的语法可能更接近Powershell所使用的语法。请注意,该网站速度非常慢,可能是因为他们更喜欢人们使用新的JSAPI(显示速度更快),并试图阻止使用COM对象模型。。。另一个选项是使用Word应用程序(Alt+F11)中的VBA编辑器和对象浏览器(F2),单击术语,然后转到VBA帮助主题。