Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

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

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

Окно Word делается видимым и максимизируется:

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

WA.Visible=true;

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

WA.WindowState=wdWindowStateMaximize;

В переменной

Sel
сохраняется ссылка на объект
Selection
:

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

Sel=WA.Selection;

Как

и в сценарии ListWord.js, данные из файла book.xml считываются в массив
PersonArr
с использованием объектной модели XML DOM. Вывод информации из этого массива в строки таблицу происходит в функции
ListPersonArray
:

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

function ListPersonArray {

 var i;

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

 PersonArr.sort(SortLastName);

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

 WD.Bookmarks("TableStart").Select;

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

 for (i=0;i<=PersonArr.length-1;i++) {

//Печать информации для текущей записи

PrintPerson(PersonArr[i]);

 }

}

Как мы видим, сначала в этой функции в семействе

Bookmarks
находится закладка с именем "TableStart" и с помощью метода
Select
происходит выделение этой закладки в документе. Затем в цикле
for
вызывается функция
PrintPerson(PersReс)
для каждого элемента массива
PersonArr
; в этой функции содержимое полей объекта
PersRec
последовательно печатается в ячейки таблицы:

//Печать содержимого полей объекта 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++;

}

Итак, печать в таблице происходит следующим образом:

после вывода текста в текущую ячейку мы перемещаемся в соседнюю ячейку справа (константа
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+"\\";

Поделиться:
Популярные книги

Булгаков

Соколов Борис Вадимович
Документальная литература:
публицистика
5.00
рейтинг книги
Булгаков

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Император Пограничья 5

Астахов Евгений Евгеньевич
5. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 5

Отвергнутая невеста генерала драконов

Лунёва Мария
5. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Отвергнутая невеста генерала драконов

Вперед в прошлое 4

Ратманов Денис
4. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое 4

Древесный маг Орловского княжества 3

Павлов Игорь Васильевич
3. Орловское княжество
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Древесный маг Орловского княжества 3

Газлайтер. Том 21

Володин Григорий Григорьевич
21. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 21

Решала

Иванов Дмитрий
10. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Решала

Поход

Валериев Игорь
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
Поход

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Апокриф

Вайс Александр
10. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Апокриф

Ветер перемен

Ланцов Михаил Алексеевич
5. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ветер перемен

Дважды одаренный. Том II

Тарс Элиан
2. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Дважды одаренный. Том II