}
//Конструктор объекта 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();
//Создаем объект XML DOM
XML = WScript.CreateObject('Msxml.DOMDocument');
//Загружаем XML-документ из файла
XML.load(PathBook);
//Сохраняем в переменной Root ссылку на корневой элемент документа
Root=XML.documentElement;
//Перебираем все дочерние элементы первого уровня вложенности
//для корневого элемента
for (i=1; i<=Root.childNodes.length-1;i++) {
//Выделяем в коллекции XML-элементов i-й элемент
CurrNode=Root.childNodes.item(i);
//Добавляем новый элемент в массив объектов Person
PersonToArray(CurrNode);
}
}
//Вывод заголовка отчета
function TopReport() {
//Печатаем в ячейки текст
XL.Cells(1,1).Value='Фамилия';
XL.Cells(1,2).Value='Имя';
XL.Cells(1,3).Value='Телефон';
//Выделяем три ячейки
XL.Range('A1:C1').Select();
//Устанавливаем полужирный текст для выделенного диапазона
XL.Selection.Font.Bold = true;
//Устанавливаем выравнивание по центру для выделенного диапазона
XL.Selection.HorizontalAlignment=xlCenter;
}
//Печать содержимого полей объекта Person
function PrintPerson(PersRec) {
//Увеличиваем счетчик количества записей
NomRec++;
//В первом столбце печатаем фамилию
XL.Cells(NomRec+1,1).Value=PersRec.LastName;
//Во втором столбце печатаем имя
XL.Cells(NomRec+1,2).Value=PersRec.Name;
//В третьем столбце печатаем телефон
XL.Cells(NomRec+1,3).Value=PersRec.Phone;
}
//Сортировка массива и печать его содержимого
function ListPersonArray() {
var i;
//Сортировка массива по фамилии
PersonArr.sort(SortLastName);
for (i=0;i<=PersonArr.length-1;i++) {
PrintPerson(PersonArr[i]);
}
}
//Функция для сортировки массива по фамилии
function SortLastName(Pers1,Pers2) {
if (Pers1.LastName<Pers2.LastName) return -1;
else if (Pers1.LastName==Pers2.LastName) return 0;
else return 1;
}