Доброго времени суток друзья. Я уже рассказывал, как можно работать с Microsoft Excel средствами PowerShell. В данной статье мы рассмотрим работу PowerShell с Microsoft Word. Как и для Excel, чтобы получить доступ к MS Word нужно использовать COM объект. Для этого используем командлет New-Object с параметром –ComObject далее сам объект к которому хотим получить доступ, в нашем случае это Word.Application.
#Создаем новый объект WORD $word = New-Object -ComObject Word.Application
После создания объекта обращаемся к свойству Visible и переключаем его в TRUE чтобы видеть работу скрипта непосредственно в самом MS Word а не в фоновом режиме.
#Видимый режим вставки, по умолчанию FALSE $word.Visible = $True
Далее необходимо создать сам документ для этого обращаемся к свойству Documents и его методу Add().
#Создаем новый документ $doc = $word.Documents.Add()
Обратимся к свойству Selection для работы с текущим документом, далее мы будем использовать его для форматирования нашего документа.
#Выбираем открывшийся документ для работы $Selection = $word.Selection
Задаем начальные настройки для документа допустим отступы со всех сторон.
#Устанавливаем отступы для документа $Selection.Pagesetup.TopMargin = 50 $Selection.Pagesetup.LeftMargin = 50 $Selection.Pagesetup.RightMargin = 50 $Selection.Pagesetup.BottomMargin = 50
Установим строчный интервал сверху и снизу.
#Интервал отступов сверху и снизу $Selection.ParagraphFormat.SpaceBefore = 0 $Selection.ParagraphFormat.SpaceAfter = 0
Подготовительные работы закончены, теперь можем заполнять наш документ. Укажем что наш первый абзац будет по центру для этого воспользуемся свойством ParagraphFormat и его свойством Aligment.
#Выравнивание по центру $Selection.ParagraphFormat.Alignment = 1
Далее создаем таблицу с одной строкой и одной ячейкой которую зальем черным цветом и разместим пользовательскую картинку.
#Добавляем таблицу $Table = $Word.ActiveDocument.Tables.Add($Word.Selection.Range, 1, 1) #Устанавливаем черный цвет заливки ячейки $Table.Cell(1,1).Shading.BackgroundPatternColor = 0 #Вставляем картинку в ячейку таблицы $Table.Cell(1,1).Range.InlineShapes.AddPicture("D:\Temp\bezramok-tlt.png") #Конец таблицы, начать новую строку $Selection.EndKey(6, 0)
Далее переходим на новую строчку документа воспользовавшись методом TypeParagraph().
#Новый параграф $Selection.TypeParagraph()
Далее установим нужные настройки для нашего заголовка.
#Шрифт написания $Selection.Font.Name = "Times New Roman" #Размер шрифта $Selection.Font.Size = 18
Как видно из примера мы установили шрифт Time New Roman и размер шрифта 18, далее вставляем текст.
#Текст заголовка $Selection.TypeText("Работаем с Microsoft Word при помощи PowerShell")
Для следующего текста поменяем настройки шрифта и размер и вид, а также выровняем текст по ширине документа.
#Выравнивание по ширине листа $Selection.ParagraphFormat.Alignment = 3 #Устанавливаем новые значения размера шрифта $Selection.Font.Name = "Arial" $Selection.Font.Size = 12 #Пишем курсивом $Selection.Font.Italic = $true
Далее добавляем новый текст в наш документ.
#Добавляем следующий текст $Selection.TypeText("Windows PowerShell — расширяемое средство автоматизации от Microsoft с открытым исходным кодом")
Так как для следующего текста нам не нужен курсив, то отключаем его.
#отключаем курсив $Selection.Font.Italic = $false
Далее создаем настройки для следующего текста, выправным его по центру и изменим цвет на темно-зеленый, а также выделим жирным.
#Вставляем заголовок по центру $Selection.ParagraphFormat.Alignment = 1 #Устанавливаем новые значения размера шрифта $Selection.Font.Name = "Arial" $Selection.Font.Size = 18 #Делаем цвет текста темно-зеленым $Selection.Font.Color = "wdColorDarkGreen" #Выделяем жирным $Selection.Font.Bold = $True #Следующий текст в нашем документе $Selection.TypeText("Добавляем картинку из файла ")
Далее вставляем картинку в документ по центру, для этого используем свойство InlineShapes и его метод AddPicture() передав путь до картинки.
#Вставляем картинку из файла $Selection.InlineShapes.AddPicture("D:\Temp\word.jpg")
Далее отменяем центрирование и меняем цвет текста на черный.
#Делаем цвет текста черным $Selection.Font.Color = 0 #Отменяем жирный $Selection.Font.Bold = $False
Устанавливаем новые настройки для следующего текста.
#Настройки размера шрифта для нового текста $Selection.Font.Name="Times New Roman" $Selection.Font.Size=12
Далее создадим таблицу с тремя столбцами в которую заполним с помощью PowerShell.
#Добавляем таблицу $Table = $Word.ActiveDocument.Tables.Add($Word.Selection.Range, 1, 3) #Ручной вариант форматирования таблицы # $Table.Range.Style = "Table Grid" # $Table.Borders.InsideLineStyle = 1 # $Table.Borders.OutsideLineStyle = 1 #Заполняем шапку таблицы $Table.Cell(1,1).Range.Text = "№" $Table.Cell(1,2).Range.Text = "Name" $Table.Cell(1,3).Range.Text = "DysplayName" #Счетчики для генерации таблицы $i = 2 $counter = 1 #Получаем список всех процессов на компьютере $srv = Get-Service a* #Записываем полученые данные в ячейки таблицы foreach ($arr in $srv) { $Table.Rows.Add() $Table.Cell($i,1).Range.Text = $counter $Table.Cell($i,2).Range.Text = $arr.Name $Table.Cell($i,3).Range.Text = $arr.DisplayName #инкрементируем счетчики $i = $i + 1 $counter = $counter + 1 } #Автоформатирование таблицы $Table.AutoFormat(20) #Конец таблицы, начать новую строку $Selection.EndKey(6, 0)
Здесь нужно отметить, что ячейки таблицы начинаются с 1. Для генерации новой строки нужно использовать свойство Rows и его метод Add(). Для удобства форматирования таблицы используем метод AutoFormat() передав число (это идентификатор шаблона форматирования таблицы). Для перехода от таблицы к обычному документу используем метод EndKey(6, 0).
Далее создаем настройки для нового текста, выровняем все по левому краю и добавим гиперссылок в наш документ.
#Вставляем заголовок по центру $Selection.paragraphFormat.Alignment = 0 #Размер шрифта $Selection.Font.Size=14 #Текст $Selection.TypeText("Урок создал") #Новый параграф $Selection.TypeParagraph() #Размер шрифта $Selection.Font.Size=12 #Гиперссылка сайта $Selection.Hyperlinks.Add($Selection.Range,"http:#bezramok-tlt.ru") #Новый параграф $Selection.TypeParagraph() #Гиперссылка почты $Selection.Hyperlinks.Add($Selection.Range,"mailto:bezramok-tlt@mail.ru") #Новый параграф $Selection.TypeParagraph() #Текст $Selection.TypeText("Админ") #Новый параграф $Selection.TypeParagraph() #Размер шрифта $Selection.Font.Size=10 #Текст $Selection.TypeText("Дата: " + $date)
Как вы заметили мы использовали свойство Hyperlinks и его метод Add() в который передали URL для гиперссылки.
Далее сохраняем документ (СохранитьКак) указываем путь куда будем сохранять наш файл, закрываем сам документ, закрываем само приложение MS Word.
#СохранитьКак указываем путь куда и имя файла $doc.SaveAs([ref]"D:\temp\PsWord.docx") #Закрываем документ $doc.Close() #Закрываем приложение $word.Quit()
Я постарался собрать на мой взгляд основные действия для заполнения документа – это форматирование текста, изменение размера текста, шрифта, цвета. Создание таблиц, заполнение таблицы графически и текстовым материалом, а также заливка ячейки цветом.
Вот таким способом можно создавать документы MS Word с помощью PowerShell.
Теги:
Поддержи проект:
Не совсем понял, но может Вы имели ввиду:
//Новый параграф $Selection.TypeParagraph()