Уважаемые друзья, форма вопрос - ответ снова в строю!

PowerShell работа с Microsoft Word

Powershell работа с Excel на примере служб windows

Доброго времени суток друзья. Я уже рассказывал, как можно работать с 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.

Скрипт PowerShell работа с MS Word целиком
Flash
16:37:48 07/10/2016г.
Как осуществляется перевод каретки, допустим мне необходимо, что то дописать в конце документа?

Не совсем понял, но может Вы имели ввиду:



//Новый параграф
$Selection.TypeParagraph()

- Администрация     - 19:06:45 07/10/2016г.

  • 1

Получить уведомление на Email

Введите код с картинки