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

 
 
Комментарии

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

Степан

Спасибо за статью, но $Document = $Word.Document.Add() выдает ошибку, так как правильно будет $Document = $Word.Documents.Add(), исправь пожалуйста синтаксис, чтобы новички типа меня не впадали в ступор

Исправил.