在PowerShell的word doc文件的不同页面上的不同标题?

时间:2013-09-24 12:13:37

标签: powershell ms-word powershell-v2.0

我在阅读几个文本文件并尝试添加后创建一个doc文件 powershell doc文件对应的页眉中的文本文件名 但是下面的代码在每个页面上将最后一个读取文件写为标题。 注意: - 数据显示在doc文件上,只有标题未正确写入。 如何将文本文件名写为doc上的标题(意味着相同的doc将在不同的页面上具有不同的标题)

$dir="D:\abcd"
$val=ls $dir
$file_count=(get-childitem .).count
$page_count=0
$hash=@{};
set-variable -name wdAlignPageNumberCenter -value 1 
$Word = New-Object -ComObject Word.Application
$Word.Visible = $true
$Doc = $Word.Documents.Add()
$Section = $Doc.Sections.Item(1)
$Header = $Section.Headers.Item(1)
$Footer = $Section.Footers.Item(1)
$Footer.PageNumbers.Add($wdAlignPageNumberCenter)
$selection=$word.Selection
$page="`tPage";
$loop=1
foreach ($file in $val){
    $filename = "D:\abcd\$file"
    $filedata = (get-content $filename);
    $Footer.Range.Text=$page
    $head="ABCD`t`tFile ID: $file"
    $Header.Range.Text = $head  
}
$savepath="D:\abcd\$file.docx"
$Doc.SaveAs([ref]$savepath) 
$Doc.Close()

1 个答案:

答案 0 :(得分:1)

在Word中,您可以通过section将其拆分为文档的不同部分创建唯一标头。您遇到的问题是因为似乎只有一个部分,因此也只有一个标题...在foreach循环中被覆盖。此行为与您描述的结果一致,因为最后一个读取文件将显示为整个文档的标题。

您已在此处指定了一个部分(以及一组页眉/页脚):

$Section = $Doc.Sections.Item(1)
$Header = $Section.Headers.Item(1)
$Footer = $Section.Footers.Item(1)

每次想要不同的标题时,只需修改逻辑即可创建一个新的逻辑。