Выбрать главу

 Sel.Font.Bold=true;

 //Выводим сообщение с переводом строки

 Sel.TypeText(Mess+"\n");

 Sel.TypeText("\n");

 //Устанавливаем выравнивание слева

 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 (этот процесс был подробно описан в главе 7). Печать информации из элемента массива PersonArr (экземпляра объекта Person) производится в функции PrintPerson(PersRec):

//Печать содержимого полей объекта 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("-------------------------------------\n");

 //Увеличиваем номер текущей записи

 NomRec++;

}

Здесь используется функция TypeString(Title, Сontent), в которой происходит печать наклонным шрифтом названия поля (параметр Title) и прямым шрифтом значения этого поля (параметр Content):

//Вывод одного поля из записи

function TypeString(Title, Content) {

 //Устанавливаем наклонный шрифт

 Sel.Font.Italic=true;

 //Печатаем название поля

 Sel.TypeText(Title+":\t");

 //Отменяем наклонный шрифт

 Sel.Font.Italic=false;

 //Печатаем содержимое поля

 Sel.TypeText(Content+"\n");

}

В качестве итоговой информации в функции BottomReport(Mess) печатается общее количество записей в книжке:

//Вывод итоговой информации

function BottomReport(Mess) {

 //Устанавливаем полужирный шрифт

 Sel.Font.Bold=true;

 //Выводим сообщение с переводом строки

 Sel.TypeText(Mess+"\n");

 //Отменяем полужирный шрифт

 Sel.Font.Bold=false;

}

После того как вся нужная информация напечатана в документе, он сохраняется на диске с помощью метода SaveAs() объекта Document:

//Сохраняем созданный документ под именем out.doc

WD.SaveAs(PathOut);

В листинге 8.1 приводится полный текст сценария ListWord.js.

Листинг 8.1. Вывод данных из XML-файла в Microsoft Word (обычный текст)

/*******************************************************************/

/* Имя: ListWord.js                                               */

/* Язык: JScript                                                   */

/* Описание: Печать данных из записной книжки в                    */

/*           файл Microsoft Word                                   */

/*******************************************************************/

//Объявляем переменные

var

 WshShell,  //Экземпляр объекта WshShell

 BasePath,  //Путь к текущему каталогу

 PathBook,  //Путь к файлу с данными

 PathOut,   //Путь к выходному файлу Winword

 WA,        //Экземпляр объекта Application

 WD,        //Экземпляр объекта Document

 Sel,       //Экземпляр объекта Selection

 NomRec=0,  //Счетчик количества записей

 PersonRec, //Объект для хранения данных об одном человеке

 PersonArr; //Массив для хранения объектов PersonRec

//Инициализируем константы Winword'а

var wdAlignParagraphLeft=0,wdAlignParagraphCenter=1,wdWindowStateMaximize=1;

//Построение путей к файлам

function InitPath() {