Андрей Попов - Windows Script Host для Windows 2000/XP
//Устанавливаем размер шрифта 12 пт
Sel.Font.Size=12;В
Теперь мы полностью готовы начать печать текста. Сначала в функции TopReport() печатается заголовок отчета:
//Печатаем заголовок отчета
TopReport("Общий список");
Функция TopReport(Mess) имеет следующий вид:
//Вывод заголовка отчета
function TopReport(Mess) {
 //Устанавливаем выравнивание по центру
В Sel.ParagraphFormat.Alignment=wdAlignParagraphCenter;
 //Устанавливаем полужирный шрифт
В 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() {
var BasePath;
В BasePath=WshShell.CurrentDirectory+"\";
 //Путь к файлу с данными
В PathBook=BasePath+"book.xml",
 //Путь к выходному файлу
В PathOut=BasePath+"out.doc";
}
//Конструктор объекта Person
function Person(LastName,Name,Phone,Street,House,App,Note) {
 this.LastName=LastName; //Фамилия
В this.Name=Name;В В В В В В В В //РРјСЏ
 this.Phone=Phone;      //Телефон
 this.Street=Street;    //Улица
 this.House=House;      //Дом
 this.App=App;          //Квартира
 this.Note=Note;        //Примечание
}
//Определение значения тега tgName XML-элемента obj
function GetTagVal(obj, tgName) {
В var ElemList;