//Создаем новый документ
wd=WA.Documents.Add();
Так как процесс печати данных из сценария может быть довольно длительным, окно Word мы сделаем видимым и максимизируем его:
//Делаем окно Winword видимым
WA.Visible=true;
//Максимизируем окно Winword
WA.WindowState=wdWindowStateMaximize;
Для того чтобы начать печатать в окне Word, нужно получить ссылку на объект Selection
(глобальная переменная Sel
), который позволяет работать с выделенным текстом:
//Получаем ссылку на объект Selection
Sel=WA.Selection;
С помощью свойства Font
объекта Selection
мы устанавливаем размер шрифта, которым далее будет печататься текст:
//Устанавливаем размер шрифта 12 пт
Sel.Font.Size=12;
Теперь мы полностью готовы начать печать текста. Сначала в функции TopReport()
печатается заголовок отчета:
//Печатаем заголовок отчета
TopReport('Общий список');
Функция TopReport(
имеет следующий вид:
//Вывод заголовка отчета
function TopReport(Mess) {
//Устанавливаем выравнивание по центру
Sel.ParagraphFormat.Alignment=wdAlignParagraphCenter;
//Устанавливаем полужирный шрифт
Sel.Font.Bold=true;
//Выводим сообщение с переводом строки
Sel.TypeText(Mess+'
');
Sel.TypeText('
');
//Устанавливаем выравнивание слева
Sel.ParagraphFormat.Alignment=wdAlignParagraphLeft;
//Отменяем полужирный шрифт
Sel.Font.Bold=false;
}
Как мы видим, текст печатается с помощью метода TypeText()
, а форматируется путем изменения соответствующих свойств объекта Selection
(которые, в свою очередь, являются объектами того или иного типа). Отметим, что именные константы, которые используются для форматирования текста, были предварительно проинициализированы в самом начале сценария:
//Инициализируем константы Winword'а
var wdAlignParagraphLeft=0, wdAlignParagraphCenter=1, wdWindowStateMaximize=1;
После выполнения функции TopReport()
в документе Word будет полужирным шрифтом с выравниванием по центру напечатана строка 'Общий список', а курсор установится на две строки ниже (рис. 8.6).

Рис. 8.6. Заголовок отчета, напечатанный в сценарии ListWord.js
Далее в сценарии данные из XML-файла book.xml считываются в массив PersonArr
с использованием объектной модели XML DOM (этот процесс был подробно описан вPersonArr
(экземпляра объекта Person
) производится в функции PrintPerson (
:
//Печать содержимого полей объекта Person
function PrintPerson(PersRec) {
//Печатаем поля текущей записи
TypeString('Фамилия',PersRec.LastName);
TypeString('Имя',PersRec.Name);
TypeString('Телефон',PersRec.Phone);
TypeString('Улица',PersRec.Street);
TypeString('Дом',PersRec.House);
TypeString('Кв.',PersRec.App);
TypeString('Заметки',PersRec.Note);
//Печатаем разделитель с переводом строки
Sel.TypeText('-------------------------------------
');
//Увеличиваем номер текущей записи
NomRec++;
}
Здесь используется функция TypeString(
, в которой происходит печать наклонным шрифтом названия поля (параметр Title
Content
//Вывод одного поля из записи
function TypeString(Title, Content) {
//Устанавливаем наклонный шрифт
Sel.Font.Italic=true;
//Печатаем название поля
Sel.TypeText(Title+': ');
//Отменяем наклонный шрифт
Sel.Font.Italic=false;
//Печатаем содержимое поля
Sel.TypeText(Content+'
');
}
В качестве итоговой информации в функции BottomReport(
печатается общее количество записей в книжке:
//Вывод итоговой информации
function BottomReport(Mess) {
//Устанавливаем полужирный шрифт
Sel.Font.Bold=true;
//Выводим сообщение с переводом строки
Sel.TypeText(Mess+'
');
//Отменяем полужирный шрифт
Sel.Font.Bold=false;
}
После того как вся нужная информация напечатана в документе, он сохраняется на диске с помощью метода SaveAs()
объекта Document
:
//Сохраняем созданный документ под именем out.doc
WD.SaveAs(PathOut);