Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программное обеспечение » Windows Script Host для Windows 2000/XP - Андрей Попов

Windows Script Host для Windows 2000/XP - Андрей Попов

Читать онлайн Windows Script Host для Windows 2000/XP - Андрей Попов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 108 109 110 111 112 113 114 115 116 ... 175
Перейти на страницу:

 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();

 //Создаем объект 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);

В }

}

//Печать содержимого полей объекта Person

function PrintPerson(PersRec) {

 //Печатаем поля текущей записи

В WA.Selection.Text=PersRec.LastName;

 //Переходим к следующей ячейке таблицы

В WA.Selection.MoveRight(wdCell);

В WA.Selection.Text=PersRec.Phone;

В WA.Selection.MoveRight(wdCell);

В WA.Selection.Text=PersRec.Note;

В if (NomRec<PersonArr.length-1)

  //Если напечатаны еще не все записи, то нужно

  //добавить в таблицу новую строку

В  WA.Selection.MoveRight(wdCell);

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

В NomRec++;

}

//Сортировка массива и печать его содержимого

function ListPersonArray() {

В var i;

 //Сортировка массива по фамилии

В PersonArr.sort(SortLastName);

 //Переходим к закладке TableStart

В WD.Bookmarks("TableStart").Select();

 //Цикл по всем элементам массива PersonArr

В 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;

}

//Печать содержимого файла с данными

function ListFile() {

 //Считываем данные из файла в массив

В FileToArray();

 //Печатаем информацию из массива

В ListPersonArray();

}

//Основная запускная функция

function Main() {

 //Создаем объект WshShell

В WshShell = WScript.CreateObject("WScript.Shell");

 //Определяем пути к файлам

В InitPath();

 //Создаем объект Application

В WA=WScript.CreateObject("Word.Application");

 //Создаем новый документ

В WD=WA.Documents.Add(PathTempl,false);

 //Делаем окно Winword видимым

В WA.Visible=true;

 //Максимизируем окно Winword

В WA.WindowState=wdWindowStateMaximize;

 //Получаем ссылку на объект Selection

В Sel=WA.Selection;

 //Выводим в таблицу содержимое файла с данными

В ListFile();

 //Выделяем закладку "NomRec"

В WD.Bookmarks("NomRec").Select();

 //Печатаем итоговую информацию

В WA.Selection.Text=PersonArr.length;

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

В WD.SaveAs(PathOut);

}

/*******************  Начало  **********************************/

Main();

/*************  Конец *********************************************/

Вывод данных из записной книжки в таблицу Microsoft Excel

Напишем сценарий, который будет создавать файл (рабочую книгу) Microsoft Excel и заносить туда данные из записной книжки (рис. 8.10).

Рис. 8.10. Рабочая книга Microsoft Excel с данными из файла book.xml

Для того чтобы использовать определенные в Excel именные константы без их предварительной инициализации (как мы это делали в сценариях, работающих с Word), наш сценарий будет представлять собой WS-файл ListXLS.wsf, в котором мы определим с помощью тега <reference> ссылку на объект Excel.Sheet:

1 ... 108 109 110 111 112 113 114 115 116 ... 175
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Windows Script Host для Windows 2000/XP - Андрей Попов.
Комментарии