我在阅读几个文本文件并尝试添加后创建一个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()
答案 0 :(得分:1)
在Word中,您可以通过section将其拆分为文档的不同部分创建唯一标头。您遇到的问题是因为似乎只有一个部分,因此也只有一个标题...在foreach
循环中被覆盖。此行为与您描述的结果一致,因为最后一个读取文件将显示为整个文档的标题。
您已在此处指定了一个部分(以及一组页眉/页脚):
$Section = $Doc.Sections.Item(1)
$Header = $Section.Headers.Item(1)
$Footer = $Section.Footers.Item(1)
每次想要不同的标题时,只需修改逻辑即可创建一个新的逻辑。