Для создания в Excel нового файла (рабочей книги) используется метод Add()
семейства Workbooks
:
//Открываем новую рабочую книгу
XL.WorkBooks.Add();
Затем в сценарии выставляется необходимая ширина трех первых колонок (здесь мы будем печатать имя, фамилию и номер телефона). Для этого следует присвоить нужные значения свойству ColumnWidth
соответствующих элементов коллекции Columns
:
//Устанавливаем нужную ширину колонок
XL.Columns(1).ColumnWidth = 40;
XL.Columns(2).ColumnWidth = 40;
XL.Columns(3).ColumnWidth = 10;
Заголовок отчета (названия столбцов) печатается в функции TopReport()
:
//Вывод заголовка отчета
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;
}
Как мы видим, доступ к ячейке можно получить с помощью свойства Сells
объекта Application
, указав в круглых скобках индексы строки и столбца, на пересечении которых находится данная ячейка (нумерация строк и столбцов начинается с единицы). Свойство Value
соответствует содержимому ячейки.
Так как названия столбцов должны быть выделены полужирным шрифтом и выровнены по центру, мы в функции TopReport()
с помощью метода Select()
объекта Range
сначала выделяем сразу три ячейки ('A1
', 'B1
' и 'С1
'):
//Выделяем три ячейки XL.Range('A1:C1').Select();
а затем устанавливаем необходимые свойства у объекта Selection
, который соответствует выделенному диапазону:
//Устанавливаем полужирный текст для выделенного диапазона
XL.Selection.Font.Bold = true;
//Устанавливаем выравнивание по центру для выделенного диапазона
XL.Selection.HorizontalAlignment=xlCenter;
Как и во всех предыдущих сценариях этой главы, данные из файла book.xml посредством функции FileToArray()
заносятся в массив PersonArr
. Содержимое этого массива сортируется по фамилии и выводится в рабочую книгу Excel в функции ListPersonArray()
(этот шаг также является одинаковым во всех сценариях):
//Сортировка массива и печать его содержимого
function ListPersonArray() {
var i;
//Сортировка массива по фамилии
PersonArr.sort(SortLastName);
for (i=0;i<=PersonArr.length-1;i++) {
PrintPerson(PersonArr[i]);
}
}
В функции PrintPerson(
происходит печать фамилии, имени и номера телефона для одной записиPersRec
Person
). Для этого нужно определить номер строки, в ячейки которой будут записаны данные, что делается с помощью увеличения значения счетчика количества записей NomRec
:
//Печать содержимого полей объекта 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;
}
Полностью текст сценария ListXLS.wsf приведен в листинге 8.3.
<package>
<job id='list_xl'>
<runtime>
<description>
Имя: ListXLS.wsf
Описание: Печать данных из записной книжки в Microsoft Excel
</description>
</runtime>
<reference object='Excel.Sheet'/>
<script language='JScript'>
var
WshShell, //Экземпляр объекта WshShell
BasePath, //Путь к текущему каталогу
PathBook, //Путь к файлу с данными
PathOut, //Путь к выходному файлу Winword
XL, //Экземпляр объекта Application
NomRec=0, //Счетчик количества записей
PersonRec, //Объект для хранения данных об одном человеке
PersonArr; //Массив для хранения объектов PersonRec
//Построение путей к файлам
function InitPath() {
var BasePath;
BasePath=WshShell.CurrentDirectory+'\';
//Путь к файлу с данными
PathBook=BasePath+'book.xml',
//Путь к выходному файлу
PathOut=BasePath+'out.xml';