Вставьте длинную строку в документ Word с помощью PowerShell - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь вставить длинную строку в документ Word из файла (чтобы заменить что-то в документе [REPLACEME]).

Кажется, есть ограничение в 255 символов, которые могут быть вставлены, в противном случае я получаю ошибку: слишком длинный строковый параметр.

Вот текст в формате CSV:

</p>

<pre><code>Number, Shortcut_Name
1., "Web Connector"
2., "QuickBooks Web Connector"
3., "QuickBooks Simple Start"
4., "QuickBooks Simple Start Free Edition"
5., "QuickBooks Premier - Nonprofit Edition 2010"
6., "QuickBooks Enterprise Solutions 10.0"
7., "QuickBooks Enterprise Solutions - Accountant Edition 10.0"
8., "QuickBooks Enterprise Solutions - Contractor Edition 10.0"
9., "QuickBooks Enterprise Solutions - Nonprofit Edition 10.0"
10., "QuickBooks Enterprise Solutions - Professional Services Edition 10.0"
11., "QuickBooks Enterprise Solutions - Retail Edition 10.0"
12., "QuickBooks Enterprise Solutions - Manufacturing and Wholesale Edition 10.0"

Ниже работает код.Как я могу использовать этот код для поиска слова [REPLACEME] в текстовом документе и замены приведенным ниже выводом таблицы?

</p>

<pre><code>$filelist = "c:\temp\test.txt"
[ref]$SaveFormat = "microsoft.office.interop.word.WdSaveFormat" -as [type]
$topics = Import-Csv $filelist
$path = "C:\temp\output.docx"
$Number_Of_Rows = ($topics.Count +1)
$Number_Of_Columns = ($topics | gm -MemberType NoteProperty).count
$x = 2
$Word = New-Object -comobject word.application
$Word.Visible = $false
$Doc = $Word.Documents.Add()
$Range = $Doc.Range()
$Doc.Tables.Add($Range,$Number_Of_Rows,$Number_Of_Columns) | Out-Null
$Table = $Doc.Tables.item(1)
$Table.Cell(1,1).Range.Text = "Number"
$Table.Cell(1,2).Range.Text = "Shortcut_Name"
Foreach($t in $topics)
{
 $Table.Cell($x,1).Range.Text = $t.Number
 $Table.Cell($x,2).Range.Text= $t.Shortcut_Name
 $x++
} 
$Table.AutoFormat(9)
$doc.saveas([ref] $path, [ref]$SaveFormat::wdFormatDocumentDefault)
$doc.close()
$word.quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($doc) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($range) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($table) | Out-Null
Remove-Variable Doc,Word, range, table
[gc]::collect()
[gc]::WaitForPendingFinalizers()

...