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
}