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

Вывод данных из записной книжки в таблицу 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 нового файла (рабочей книги) используется метод 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) происходит печать фамилии, имени и номера телефона для одной записи 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.

Листинг 8.3. Вывод данных из XML-файла в таблицу Microsoft Excel

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

}

//Конструктор объекта 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;

}

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

function ListFile() {

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

 FileToArray();

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

 ListPersonArray();

}

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

function Main() {

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

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

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

 InitPath();

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

 XL=WScript.CreateObject("Excel.Application");

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

 XL.Visible=true;

 //Открываем новую рабочую книгу

 XL.WorkBooks.Add();

 //Устанавливаем нужную ширину колонок

 XL.Columns(1).ColumnWidth = 40;

 XL.Columns(2).ColumnWidth = 40;

 XL.Columns(3).ColumnWidth = 10;

 //Печатаем заголовок таблицы

 TopReport();

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

 ListFile();

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

 XL.ActiveWorkbook.SaveAs(PathOut);

}

//Запускаем основную функцию

Main();

</script>

</job>

</package>

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

MICROSOFT EXCEL

Из книги Microsoft Office автора Леонтьев Виталий Петрович

MICROSOFT EXCEL Таблицы пришли на ПК едва ли не раньше, чем текст. Ничего удивительного – ведь «компьютер» создавался прежде всего как «вычислитель», а не как заместитель пишущей машинки. И именно редакторы электронных таблиц (такие как незабвенная система «1-2-3») ходили в


Горячие клавиши Microsoft Excel

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

Горячие клавиши Microsoft Excel (См. с. 45–147)Другие функциональные сочетания


Ввод данных в таблицу

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Ввод данных в таблицу После вставки пустой таблицы вы переходите в режим редактирования: на экране отображается вкладка Multiline Text (Многострочный текст) и выделяется первая ячейка, так что вы можете начать вводить данные. Для передвижения к смежной ячейке в той же самой


Экспорт списка SharePoint в электронную таблицу Excel 2007

Из книги AutoCAD 2010 автора Орлов Андрей Александрович

Экспорт списка SharePoint в электронную таблицу Excel 2007 В электронные таблицы Excel 2007 можно экспортировать содержимое списков SharePoint, результаты опросов и библиотеки документов. Экспортированный список или библиотека – это веб-запрос, который сохраняется обновленным, с


Ввод данных в таблицу

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Ввод данных в таблицу После вставки пустой таблицы вы переходите в режим редактирования, на экране отображается вкладка Text Editor (Редактор текста) и выделяется первая ячейка, так что вы можете начать ввод данных. Для передвижения к смежной ячейке в той же строке вы можете


Разработка записной книжки в формате текстового файла

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Разработка записной книжки в формате текстового файла Последний пример, который мы рассмотрим в этой главе, посвящен обработке данных, хранящихся в текстовом файле с разделителями (это может быть, например, выборка из электронной таблицы, базы данных и т.п.).Предположим,


Просмотр содержимого записной книжки

Из книги Delphi. Трюки и эффекты автора Чиртик Александр Анатольевич

Просмотр содержимого записной книжки Для того чтобы использовать схему XML DOM в сценарии SortNameMSXML.js, осуществляющем вывод информации из XML-файла book.xml в Блокнот, нужно внести изменения в три функции: GetTagVal(obj, tgName), PersonToArray(XNode) и FileToArray(). Сценарий, который получится в результате


Вывод данных из записной книжки в документ Microsoft Word

Из книги MySQL 5.0. Библиотека программиста автора Гольцман Виктор Иосифович

Вывод данных из записной книжки в документ Microsoft Word В качестве примера взаимодействия WSH с Microsoft Word мы рассмотрим два сценария, которые будут создавать документы Word и выводить туда информацию из записной книжки в XML-формате, которая хранится в файле book.xml. Рис. 8.4. Вывод


5.2.10. Совместимость с Microsoft Excel

Из книги автора

5.2.10. Совместимость с Microsoft Excel Приложение Numbers позволяет как открывать файлы, созданные в MS Exsel, так и экспортировать документы в этот формат, но с потерей некоторых элементов форматирования. Если форматирование достаточно простое, то искажения при экспорте и открытии не


Глава 9 Возможности COM в Microsoft Word и Microsoft Excel

Из книги автора

Глава 9 Возможности COM в Microsoft Word и Microsoft Excel • Технология OLE• Технология COM• Использование OLE в Delphi• Управление Microsoft Word и Microsoft ExcelТехнология COM/DCOM является одной из важных и широко используемых современных технологий. Охватить все аспекты технологии COM/DCOM очень сложно, и


9.4. Управление Microsoft Word и Microsoft Excel

Из книги автора

9.4. Управление Microsoft Word и Microsoft Excel Трюки в Microsoft WordВ этом разделе мы более подробно остановимся на рассмотрении практических примеров использования СОМ-сервера редактора Microsoft Word. Достаточно популярный редактор обладает обширным набором возможностей, которые можно


2.4. Ввод данных в таблицу

Из книги автора

2.4. Ввод данных в таблицу После создания таблиц можно приступать к наполнению их данными. В данном разделе вы узнаете о двух операциях, с помощью которых можно добавить строки в таблицу. Вначале мы рассмотрим загрузку данных из текстового файла, затем – вставку отдельных


Глава 6 Microsoft Excel. Сам все считает

Из книги автора

Глава 6 Microsoft Excel. Сам все считает Вы считаете меня дураком? Видимо, в Ваши расчеты вкралась ошибка. Из письма Лейбница Ньютону Краткое содержание• Как это выглядит• Прайс-лист своими руками• Бороться, искать, найти и отфильтровать• Строка формул – это и есть