//Сохраняем в переменной 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
:
<reference object="Excel.Sheet"/>
Основная функция сценария
Main
как всегда начинается с создания объекта
WshShell
и вызова функции
InitPath
, в которой определяется путь к файлу с данными book.xls и выходному файлу out.xls:
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Определяем пути к файлам
InitPath;
Для того чтобы запустить Excel и получить доступ к его интерфейсам, нужно создать экземпляр объекта
Excel.Application
(переменная
XL
):
//Создаем объект Application
XL=WScript.CreateObject("Excel.Application");
Чтобы визуально контролировать процесс вывода информации, окно Excel мы сделаем видимым:
//Делаем окно Microsoft Excel видимым
XL.Visible=true;
Для создания в Excel нового файла (рабочей книги) используется метод