Windows Script Host для Windows 2000/XP
Шрифт:
//Если напечатаны еще не все записи, то нужно
//добавить в таблицу новую строку
WA.Selection.MoveRight(wdCell);
//Увеличиваем номер текущей записи
NomRec++;
}
Итак, печать в таблице происходит следующим образом: после вывода текста в текущую ячейку мы перемещаемся в соседнюю ячейку справа (константа
wdCell
проинициализирована в самом начале сценария, wdCell=12
): WA.Selection.MoveRight(wdCell);
Если
После того как все строки в таблице напечатаны, в файл выводится итоговая информация. Для этого мы выделяем закладку с именем "NomRec" и печатаем туда количество элементов в массиве
PersonArr
: //Выделяем закладку "NomRec"
WD.Bookmarks("NomRec").Select;
//Печатаем итоговую информацию
WA.Selection.Text=PersonArr.length;
Окончательно сформированный файл сохраняется на диске под именем out.doc:
//Сохраняем созданный документ под именем out.doc
WD.SaveAs(PathOut);
Полностью текст сценария ListWordTable.js приведен в листинге 8.2.
Листинг 8.2. Вывод данных из XML-файла в таблицу Microsoft Word
/*******************************************************************/
/* Имя: ListWordTable.js */
/* Язык: JScript */
/* Описание: Печать данных из записной книжки в таблицу */
/* Microsoft Word */
/*******************************************************************/
//Объявляем переменные
var
WshShell, //Экземпляр объекта WshShell
BasePath, //Путь к текущему каталогу
PathBook, //Путь к файлу с данными
PathOut, //Путь к выходному файлу Winword
PathTempl, //Путь к документу-шаблону
WA, //Экземпляр объекта Application
WD, //Экземпляр объекта Document
Sel, //Экземпляр объекта Selection
NomRec=0, //Счетчик количества записей
PersonRec, //Объект для хранения данных об одном человеке
PersonArr; //Массив для хранения объектов PersonRec
//Инициализируем константы Winword'а
var wdCell=12, wdAlignParagraphLeft=0, wdAlignParagraphCenter=1, wdWindowStateMaximize=1;
//Построение путей к файлам
function InitPath {
var BasePath;
BasePath=WshShell.CurrentDirectory+"\\";
//Путь
к файлу с данными
PathBook=BasePath+"book.xml",
//Путь к выходному файлу
PathOut=BasePath+"out.doc";
//Путь к документу-шаблону
PathTempl=BasePath+"table.dot";
}
//Конструктор объекта 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;
//Создаем коллекцию дочерних для obj элементов, которые
//задаются тегом tgName
ElemList=obj.getElementsByTagName(tgName);
//Проверяем, есть ли в коллекции ElemList элементы
if (ElemList.length>0)
//Возвращаем значение тега tgName
return ElemList.item(0).text
else return "";
}
//Заполнение нового элемента массива
function PersonToArray(XNode) {
//Создаем новый экземпляр PersonRec объекта Person
PersonRec=new Person;
//Заполняем поля объекта PersonRec
PersonRec.LastName=GetTagVal(XNode,"LastName");
PersonRec.Name=GetTagVal(XNode,"Name");
PersonRec.Phone=GetTagVal(XNode,"Phone");
PersonRec.Street=GetTagVal(XNode,"Street");
PersonRec.House=GetTagVal(XNode,"House");
PersonRec.App=GetTagVal(XNode,"App");
PersonRec.Note=GetTagVal(XNode,"Note");
//Сохраняем объект PersonRec в массиве
PersonArr[PersonArr.length]=PersonRec;
}
//Создание массива объектов Person
function FileToArray {
var XML,Root,NomRec,CurrNode,i;
//Создаем массив PersonArr
PersonArr=new Array;
Поделиться с друзьями: