Заметки о Windows и других программных продуктах Microsoft...

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

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

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

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

$Word = New-Object -ComObject Word.Application

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

$Word.Visible = $true

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

$Document = $Word.Document.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. Также здесь есть ряд подробных статей по данной теме.

 
 
Комментарии

Очень полезная подборка команд, даже уже