文档文本在MS-Word中缺少换行符

时间:2015-09-03 02:00:00

标签: powershell ms-word

我希望将文档文本放在word文档中以供进一步处理,但是从文档中读取的文本缺少换行符,并且单词被压缩在一起。 这是一个测试用例。首先,在新文档中写几行:

PS C:\Users\outlo> $wordInstance = New-Object -ComObject Word.Application
PS C:\Users\outlo> $wordInstance.Visible = $true
PS C:\Users\outlo> $doc = $wordInstance.Documents.Add()
PS C:\Users\outlo> $sel = $wordInstance.Selection
PS C:\Users\outlo> $sel.TypeText("Hello World!")
PS C:\Users\outlo> $sel.TypeParagraph()
PS C:\Users\outlo> $sel.TypeText("Hello World 2!")
PS C:\Users\outlo> $doc.SaveAs("saved.doc", [microsoft.office.interop.word.WdSaveFormat]::wdFormatDocument)

现在阅读:

PS C:\Users\outlo> $wordInstance = New-Object -ComObject Word.Application
PS C:\Users\outlo> $wordInstance.Visible = $true
PS C:\Users\outlo> $wordInstance.Documents.Open("C:`\Users`\outlo`\Documents`\saved.doc")
PS C:\Users\outlo> $allText = $doc.StoryRanges[1].Text
PS C:\Users\outlo> $allText
Hello World!Hello World 2!

缺少中间的换行符。我正在使用Word 2016。

1 个答案:

答案 0 :(得分:0)

我首先将文档保存为.txt,并启用了新行,然后阅读该文本。

$txtPath = [System.IO.Path]::ChangeExtension($docPath, '.txt')
$doc.SaveAs2($txtPath, [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatTextLineBreaks)
$wordInstance.Quit()
$allText = [System.IO.File]::ReadAllText($txtPath)