2

我在读取几个文本文件并尝试在powershell中的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()
4

1 回答 1

1

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

您已经在这里指定了一个部分(和一组页眉/页脚):

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

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

于 2013-09-24T13:12:40.310 回答