Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #72, ДЕКАБРЬ 2004 г.

В Excel, на экспорт!

Кислицин Никита

Хакер, номер #072, стр. 072-116-3


* addWorksheet(). Эта функция возвращает экземпляр рабочего листа xls. Все дальнейшие манипуляции с данными на листе осуществляются через полученный дескриптор.

* addFormat(). Этот метод создает форматный класс, в котором определяется форматирование ячеек – размер символов, используемый шрифт, стиль текста, цвет ячейки и т.д.

Что касается методов, используемых для добавления информации в ячейки, то здесь имеет смысл описать работу процедуры write(), упоминание о которой ты уже встречал в предыдущих примерах. Первым аргументом этого метода является номер строки, а вторым, как несложно догадаться, – номер столбца. Обрати внимание, что именно номер, а не буква, как это принято в Excel. К этому придется привыкнуть. Давай попробуем вместе. Буква G – шестая по алфавиту и соответствует столбцу под номером… 5! А все потому, что нумерация строк и столбцов в нашей библиотеке начинается с нуля. Третий аргумент метода write() – это сами данные, которые нужно поместить в определенную ячейку. Есть и четвертый, необязательный параметр, используемый для визуального форматирования ячеек. Также в классе Spreadsheet_Excel_Writer_Worksheet присутствует множество функций для форматирования листа в целом перед печатью, объединения нескольких ячеек в одну и т.д. Какие-то из них я упомяну в этой статье, а какие-то оставлю тебе в качестве домашнего задания.

Форматируем ячейки

Ты уже умеешь создавать xls-листы и даже добавлять туда собственные данные. Это все здорово. Но как насчет более красивых документов? Тебе наверняка хочется научиться использовать различные шрифты, как-то зрительно выделять названия колонок и т.д. Все это можно довольно легко реализовать при помощи метода addFormat() класса PEAR::Spreadsheet_Excel_Writer. Для форматирования полученного объекта мы применяем его же методы, чтобы затем передать полученный форматный класс в качестве параметра для функции write(), что определит обрисовку указанной ячейки.

На экспорт!

Чтобы тебе было понятнее, я приведу здесь простенький пример. Давай создадим скрипт, который будет экспортировать данные из указанной sql-таблицы в файл Excel’я, выделяя зрительно названия колонок. Мы сделаем нашу программу универсальной, чтобы ее можно было использовать для любых sql-таблиц, независимо от их структуры.

Экспорт SQL-> XLS

class s2x {

var $db;

function conv($table) {

if (file_exists("li/$table".".xls") ) {

unlink("li/$table".".xls"); #Если файл существует, удаляем

}

require_once "Spreadsheet/Excel/Writer.php";

$xls =& new Spreadsheet_Excel_Writer("li/$table".".xls");

$titleFormat =& $xls-> addFormat(); # Создаем форматный класс

$titleFormat-> setFontFamily('Verdana'); # И исправляем его свойства, меняя шрифт и стиль

$titleFormat-> setBold();

$titleFormat-> setSize('13');

$titleFormat-> setColor('orange');

$titleFormat-> setBgColor('EEEEEE');

$sheet =& $xls-> addWorksheet("$table");

$fields = mysql_list_fields("$this-> db", "$table"); #Получаем список полей таблицы

$numf=mysql_num_fields($fields); #Считаем их количество

Назад на стр. 072-116-2  Содержание  Вперед на стр. 072-116-4