Создание документа Word с помощью PowerShell

Иногда приходится создавать с помощью PowerShell различные документы (отчеты по серверам, выборки из логов и пр. подобная информация). Обычно данные сохраняются в виде обычного текстового файла, либо  конвертируются в HTML. Но если у вас на компьютере установлен MS Office, то данные можно сохранять в виде документа Word. Итак, предположим, что нам необходимо создать новый документ и добавить в него текст.

Первым делом запускаем Word:

$Word = New-Object -ComObject Word.Application

Приложение запущено, но оно работает в фоновом режиме и остается невидимым для пользователя. В принципе, для создания документа это не обязательно, но если вы хотите видеть результат, то надо сделать его видимым. Для этого необходимо изменить свойство Visible:

$Word.Visible = $true

Cоздаем новый документ:

$Document = $Word.Documents.Add()

Документ открыт, но перед тем, как приступить к его редактированию, необходимо выделить участок текста или весь документ:

$Selection = $Word.Selection

Теперь добавим в документ текст с помощью метода TypeText:

$Selection.TypeText(″PowerShell&Word″)

и сохраним документ в файл:

$File = C:\Temp\psword.doc
$Document.SaveAs([ref]$File)

Закрываем документ и выходим из Word:

$Document.Close()
$Word.Quit()


создание документа

А теперь откроем созданный файл. Для этого опять запускаем Word и делаем его видимым:

$Word = New-Object -ComObject Word.Application
$Word.Visible = $true

Открываем документ:

$File = ″C:\Temp\psword.doc″
$Document = $Word.Document.Open($File)


открытие документа

И смотрим, что получилось.


открытый документ

Теперь добавим еще пару строк текста. А для того, чтобы разбить текст на строки, используем метод TypeParagraph:

$Selection = $Word.Selection
$Selection.TypeParagraph()
$Selection.TypeText(″Power″)
$Selection.TypeText(″Shell″)
$Selection.TypeParagraph()
$Selection.TypeText(″&″)
$Selection.TypeParagraph()
$Selection.TypeText(″Word″)


редактирование документа

Проверяем результат


отредактированный документ

Ну и в завершение немного украсим текст. Для этого выберем шрифт:

$Selection.Font.Name = ″Verdana″

Сделаем шрифт жирным (Bold) и наклонным (Italic):

$Selection.Font.Bold = $True
$Selection.Font.Italic = $True

Увеличим размер шрифта:

$Selection.Font.Size = 18

И изменим цвет на зеленый:

$Selection.Font.Color = ″wdColorGreen″

Добавляем текст:

$Selection.TypeText(″Word&PowerShell″)


изменение шрифтов и цвета

В результате получим такую картину


измененный документ

Посмотреть доступные цвета можно командой:

[Enum]::GetNames([Microsoft.Office.Interop.Word.wdColor])


получение списка цветов

И еще, если необходимо сохранить документ в определенном формате (например для обеспечения совместимости) то формат можно указать явно. Вывести список доступных форматов можно командой:

[Enum]::GetNames([Microsoft.Office.Interop.Word.wdSaveFormat])


список форматов для сохранения

Для примера сохраним документ в формате OpenDocument:

$File = ″C:\Temp\psword.doc″
$Document.SaveAs([ref]$SaveFormat::wdFormatOpenDocumentText)
$Word.Quit()


сохранение документа в выбранном формате

На этом, пожалуй, все. Узнать больше о свойствах и методах объекта Word.Selection, использующегося для редактирования текста, можно на MSDN. Также здесь есть ряд подробных статей по данной теме.

Отправка комментария

0 Комментарии