#powershell #ms-word #padding
Вопрос:
Я пытаюсь написать в word два разных адреса (скажем, с моего адреса на адрес моих друзей), но мне нужен текст в дальних концах документа. Но вычисление заполнения так, чтобы оно было точно в конце, не является последовательным. Я пытался использовать приведенный ниже пример, но не смог найти последовательный расчет. Кто-нибудь видит закономерность, которая может мне помочь? (Примите во внимание, что левый никогда не изменится, всегда это будет 12). «От» и » До » жестко закодированы, чтобы быть абсолютно правильными, и я отработал это, но ничего не вышло. 183-это максимальное количество символов, которые может содержать строка в word (символы, а не пробелы).
Из PowerShell:
$first = "ThisTextIs12" # Length = 12
$second = "ThisTextIsABitLonger22" # Legnth = 22
$third = "only 6" # Length = 6
$savepath="C:UsersMilanDownloadstest.docx"
$word=new-object -ComObject "Word.Application"
#$Word.Visible = $True
$doc = $word.documents.Add()
$myDoc = $word.Selection
$a = "From:".PadRight(176, ' ') "To:" # exactly right: 183-5-3 1
$myDoc.TypeText($a)
$myDoc.TypeParagraph()
$b = $first.PadRight(183-([int]$first.Length [int]$second.Length), ' ') $second # needs to be 135 instead of 149, so remove 14
$b.Length
$myDoc.TypeText($b)
$myDoc.TypeParagraph()
$c = $first.PadRight(183-([int]$first.Length [int]$third.Length), ' ') $third # needs to be 166 instead of 165, so add 1
$c.Length
$myDoc.TypeText($c)
$myDoc.TypeParagraph()
$doc.SaveAs([ref]$savepath)
$doc.Close()
$word.quit()
Из Слов:
Комментарии:
1. Единственный способ сделать это-когда Word использует моноширинный шрифт (т. Е. Когда каждый символ, включая пробел, имеет одинаковую ширину). Как вы можете видеть в своем выводе, в основном это не так.. Для этого вам, вероятно, понадобится таблица, в которой вы можете установить выравнивание влево/вправо для каждой ячейки таблицы.
2. Вы можете использовать остановку табуляции в самом правом углу страницы, а затем установить ее в положение «Выравнивание: вправо». Затем, вместо того, чтобы помещать много пробелов между текстом » От » и » До » в каждой строке, вы просто вставляете одну вкладку (например
ThisTextIs12 [TAB] ThisTextIsABitLonger22
). Это приведет к выравниванию строк адреса «От» по левому краю и выравниванию адреса «До» по правому краю. В целом, возможно, было бы лучше сделать то, что предлагает @Theo, и вставить таблицу с 1 строкой и 2 столбцами — это сделает структуру документа более простой и логичной для последующего редактирования.3. Видишь i.stack.imgur.com/Sclas.png для примера выровненной по правому краю вкладки-стоп
4. @mclayton спасибо, правда в том, что я пытался добавить таблицы раньше, но у меня с этим проблемы. Потому что всякий раз, когда я добавляю таблицы, они перезаписывают текст. Моя структура должна быть такой: Таблица заголовков, другой текст, не знаю, как это сделать. Есть какие-нибудь связи?