3

PowerShell V2 Word 2007/2010/2013

我创建了一个测试脚本,它插入一个 Word 表格并毫无问题地填充它。

还有两件事我想做:

在表格上方添加标题为“表格 x Citrix 服务” 将表格向右移动三个制表位。

示例文档可在https://dl.dropbox.com/u/43555945/StackOverflowSample.docx找到

这是我的测试代码:

$wdSeekPrimaryFooter = 4
$wdAlignPageNumberRight = 2
$wdStory = 6
$wdMove = 0
$wdSeekMainDocument = 0
$wdColorGray15 = 14277081
$wdCaptionPositionAbove = 0

$Word = New-Object -comobject "Word.Application"
$Word.Visible = $True
$word.Templates.LoadBuildingBlocks()
$BuildingBlocks=$word.Templates | Where {$_.name -eq "Built-In Building Blocks.dotx"}
$part=$BuildingBlocks.BuildingBlockEntries.Item("Motion")

$Doc = $Word.Documents.Add()
$Selection = $Word.Selection

$part.Insert($selection.Range,$True) | out-null
$selection.InsertNewPage()

#table of contents
$toc=$BuildingBlocks.BuildingBlockEntries.Item("Automatic Table 2")
$toc.insert($selection.Range,$True) | out-null

#set the footer
[string]$footertext="Report created by Webster"

#get the footer
$doc.ActiveWindow.ActivePane.view.SeekView=$wdSeekPrimaryFooter
#get the footer and format font
$footers=$doc.Sections.Last.Footers
foreach ($footer in $footers) 
{
    if ($footer.exists) 
    {
        $footer.range.Font.name="Calibri"
        $footer.range.Font.size=8
        $footer.range.Font.Italic=$True
        $footer.range.Font.Bold=$True
    }
} #end Foreach

$selection.HeaderFooter.Range.Text=$footerText

#add page numbering
$selection.HeaderFooter.PageNumbers.Add($wdAlignPageNumberRight) | Out-Null

#return focus to main document
$doc.ActiveWindow.ActivePane.view.SeekView=$wdSeekMainDocument

#move to the end of the current document
$selection.EndKey($wdStory,$wdMove) | Out-Null

$services = get-service | where-object {$_.DisplayName -like "*Citrix*"} | sort-object DisplayName

$TableRange = $doc.application.selection.range
$Columns = 2
$Rows = $services.count + 1
$Table = $doc.Tables.Add($TableRange, $Rows, $Columns)
$table.AutoFitBehavior(1)
$table.Style = "Table Grid"
$table.Borders.InsideLineStyle = 1
$table.Borders.OutsideLineStyle = 1
$xRow = 1
$Table.Cell($xRow,1).Shading.BackgroundPatternColor = $wdColorGray15
$Table.Cell($xRow,1).Range.Font.Bold = $True
$Table.Cell($xRow,1).Range.Text = "Display Name"
$Table.Cell($xRow,2).Shading.BackgroundPatternColor = $wdColorGray15
$Table.Cell($xRow,2).Range.Font.Bold = $True
$Table.Cell($xRow,2).Range.Text = "Status"
ForEach($Service in $Services)
{
    $xRow++
    $Table.Cell($xRow,1).Range.Text = $Service.DisplayName
    $Table.Cell($xRow,2).Range.Text = $Service.Status
}
4

1 回答 1

1

用于$Selection.InsertCaption(-2, "Citrix Services")通过将该代码放在构建行的 foreach 循环上方来创建表标题。
第一个参数是字幕类型;-2 是表格,其他内置标签可通过负整数访问,如图形和方程式。

使用 rows.setleftindent() 将表格缩进到您想要的位置。第一个参数是缩进距离,第二个参数定义标尺样式。在缩进之后移动您的 autofitbehavior 实例,以确保表格自动调整正确。

在构建表格行的 foreach 循环之后,将以下行添加到您的代码中。

$Table.Rows.SetLeftIndent(200,1)
$table.AutoFitBehavior(1)

希望这可以帮助!

于 2013-02-04T20:24:00.483 回答