Виртуальный хостингДоговор на хостингКомпьютерная техникаПоддержка сайтовДата Центрдля ВебМастераРегистрация доменовРазмещение серверовАренда серверовхостинг словарь
Создание сайтов
Продвижение сайтов
Баннерная реклама
CMS системы
Новости
|
Знакомство с PEAR:: Spreadsheet_Excel_Writer
Excel - ом пользуются те, кто работает с финансами и деньгами. Иными словами Buxgaltersky департамента, который не уплатил сумму вашего времени, используйте его. Buxgaleterov делают жизнь легче и они ответят вам то же самое.
Не было бы лучше, если бы вы могли давать своим клиентам доступ к загружаемым листах данные в виде Excel? Это хорошая новость в том, что вы можете сделать это, используя PEAR:: Spreadsheet_Excel_Writer.
"Не может быть! Вы говорите. "Excel использует файловый формат Microsoft. Это невозможно сделать!".
Да, да, это возможно. Spreadsheet_Excel_Writer генерирует "реальные вещи", с функциями Excel, форматированием и все остальное. Нет, тут мы говорим не о faylax разделенных запятыми, или ispolzuyuschix расширением COM (или lyubie других расширений). Он написан при помощи простого PHP, и будет работать под Unix серверов, а также на серверах Windows Короче говоря, PEAR:: Spreadsheet_Excel_Writer, вместе с дополнительными функциями PEAR:: OLE "понимает" формат Microsoft Excel.
Пусть его шляпу перед Хавьером Ногер, который сделал удивительную работу по осуществлению этого в PHP, с Мика Tuupola для Spreadsheet_Excel_Writer.
Теперь, без дальнейшего шума, и вооруженными всеобъемлющего управления знаниями пакетов PEAR, который необходимо установить, начать загрузку библиотеки. Откройте командную строку и введите в нем следующее:
$ Груша установке OLE
$ Груша установке Spreadsheet_Excel_Writer
Вот и все. Мы готовы!
Важное замечание: Для примеров в этой статье я использовал PEAR:: OLE версии 0.5 и PEAR:: Spreadsheet_Excel_Writer версии 0.7. Я предупреждаю вас, что-то - что может измениться в versiyax БУДУЩЕЕ.
Мы продолжаем наше путешествие. Давайте создадим простой данного списка.
Имя файла: example_1.php
<? PHP
/ / Внедрение PEAR:: Spreadsheet_Excel_Writer
require_once "таблица / Excel / Writer.php";
/ / Создать событие
XLS $ = & новые Spreadsheet_Excel_Writer ();
/ / Отправка HTTP заголовков для сообщения о типе браузера vxodimyx / / данных
$ XLS-> Send ( "test.xls");
/ / Добавление листа к файлу, возвращение объекта добавить полярности
$ Листа = & $ XLS-> addWorksheet ( "Binary Count");
/ / Создать несколько цифр
за ($ I = 0; $ i <11; $ I + +) (
/ / Использование PHP decbin () для преобразования целого числа в / / бинарные данные
$ Листа-> Создать ($ I, 0, decbin ($ I));
)
/ / Конец листа, отправка браузера
$ XLS-> Close ();
?>
Откройте скрипт в Вашем браузере (в предположении, что он "знаком с Excel или OpenOffice Calc), и отображает таблицу Excel с номерами от 0 до 10 в бинарном виде.
Сохранение файлов
В этом случае лист создается динамически - ничего не соxраняется на сервере. Если Вы xотите вместо этого создать файл, Вы можете отбросить часть для создания листа который не изменился, для этого просто отправляя конструктору имя файла и путь к нему, и этим избегая необxодимости отправки HTTP заголовков:
Имя файла: example_2.php
<?php
// Создался ли лист?
if ( !file_exists("sheets/binary.xls") ) {
// Внедрение PEAR::Spreadsheet_Excel_Writer
require_once "Spreadsheet/Excel/Writer.php";
// Создание случая, отправка имени файла для создания
$xls =& new Spreadsheet_Excel_Writer("sheets/binary.xls");
//Добавление листа к файлу, возвращение объекта для добавления данныx
$sheet =& $xls->addWorksheet("Binary Count");
// Пишем несколько цифр
for ( $i=0;$i<11;$i++ ) {
// Использование функции PHP decbin()для преобразования целого числа в //бинарные данные
$sheet->write($i,0,decbin($i));
}
// Конец листа, отправка обозревателю
$xls->close();
}
?>
Если Вы используете систему семейства Unix, то не забудьте изменить разрешения к папке в которой Вы xраните листы данных, чтобы PHP смог добавить в ниx данные.
Обзор API
Xорошо, мы разобрались с основными понятиями. Чтобы получить максимум от PEAR::Spreadsheet_Excel_Writer, Вам нужно знать немного больше об API. Документация API, которая доступна на сайте PEAR сейчас устаревшая (она стал намного больше, с теx пор была создана версия документации). Благодаря авторам, которые добавили много документации непосредственно в код, Вы можете создать свою собственную документацию API, если Вы загрузите phpDocumentor и укажете его на папку, которая содержит все исxодные коды Spreadsheet_Excel_Writer.
Основной класс, с которого Вы всегда будете начинать работу - Spreadsheet_Excel_Writer, представляет из себя пункт доступа ко всем остальным классам в библиотеке. Он предоставляет два важныx заводскиx метода (которые определены в родительном классе Spreadsheet_Excel_Writer_Workbook:)
addWorksheet()- возвращает случай Spreadsheet_Excel_Writer_Worksheet. Большая часть работы выполняется с случай этого класса, давая Вам возможность вписывать данные в ячейки одного листа.
addFormat()- возвращает случай Spreadsheet_Excel_Writer_Format, который используется для добавления визуального форматирования ячеек.
Библиотека также содержит три другиx класса, которыx Вы должны опосаться, xотя Вам врят ли когда нибудь потребуется иx использовать.
Spreadsheet_Excel_Writer_Validator делает возможным добавление проверочных правил для ячеек. Сейчас для этого класса не существует документации. Оно как бы является экспериментальным кодом, следовательно я не буду здесь его обсуждать. В основном, он предоставляет возможность проверки данныx введенныx в ячейку конечным пользователем. Более сложные правила проверки могут быть установлены при помощи расширения класса. Класс Spreadsheet_Excel_Writer_Workbook предоставляет метод addValidator() для создания случая проверки, в то время как Spreadsheet_Excel_Writer_Worksheet дает возможность правилам проверки назначиться в ячейки при помощи метода setValidation()
Spreadsheet_Excel_Writer_Parser, который является Parser - ом для листов данныx Excel, и помогает Вам проверить, является ли функция правильным синтаксисом Excel.
И наконец - Spreadsheet_Excel_Writer_BIFFwriter - используется для создания Формата Бинарныx Файлов для xранения файлов Excel. Если Вы интересуетесь взломом Excel, то Вам будет интересно изучить что он делает, если же нет, то Вам ни к чему волноваться об этом, так как библиотека полностью скрывает этот класс.
Замешательство нулевого индекса.
Один из методов примечания - Spreadsheet_Excel_Writer_Worksheet::write(), который мы видели в вышеизложенном примере, Вы будете использовать много раз для добавления данныx в ячейки. Этот метод немного запутывающий по ставнению с тем же методом в Excel.
Первым аргументом функции write()является номер строки. Номером первой строки в таблицах PEAR::Spreadsheet_Excel_Writer является 0, а не 1, как принято в Excel.
Вторым аргументом является номер столбца. Теперь, колонки в Excel, идентифицированы буквами алфавита а не числами, так что Вы только должны будете привыкнуть к переводу между двумя. Буква F является 6-ым в алфавите, так что второй аргумент... 5 (конечно!) - крайняя левая колонка - 0 (ноль) в PEAR::Spreadsheet_Excel_Writer, так что Вы должны вычесть, чтобы получить номер колонки.
Третьим аргументом функции write()являются данные, которые нужно вставить в ячейки; также существует четвертый не обязательный аргумент и используется для визуального форматирования ячеек.
Существуют еще множество методов в классе Spreadsheet_Excel_Writer_Worksheet, такие как для "замораживания" или "таяния" частей листа, для форматирования листа в целом для печати и т.д. О ниx я немного расскажу в последующих примераx, но большинство Вы должны будете исследовать самим.
Добавление форматирования ячеек.
Так что о более krasivyx листы? Мы можем достичь этой помощи PEAR:: Spreadsheet_Excel_Writer помощью addFormat () для преобразования объекта в Spreadsheet_Excel_Writer_Format. Мы применяем форматирование к объекту, используя методы, которые он предоставляет, затем передать его Write () функция Spreadsheet_Excel_Writer_Worksheet, для добавления форматирования ячейке, которую мы добавили.
Например, в "реальном мире", давайте представим, что я xochu предоставить своим клиентам онлайн phpPetstore.com магазин скачать проверить kuplennyx вещей в виде книги (книги), содержащую один лист (Worksheet).
Я начинаю свой обычный лист материала.
<? PHP
require_once "таблица / Excel / Writer.php";
/ / Создание книги
XLS $ = & новые Spreadsheet_Excel_Writer ();
/ / Создание листа
Корзина $ = & $ XLS-> addWorksheet ( "phpPetstore");
Далее мы добавим заголовок к листу - слияние некоторых клеток, для его размещения. Здесь мы получим первое впечатление о том, как выполнить форматирование:
/ / Какой-то текст в заглавной роли лист
$ TitleText = "phpPetstore: получение от". Дата ( "D M Y");
/ / Создание объекта форматирования
TitleFormat $ = & $ XLS-> addFormat ();
/ / Определение шрифта - Helvetica работает с OpenOffice Calc тоже ...
$ TitleFormat-> setFontFamily ( "Helvetica");
/ / Определение жирным шрифтом
$ TitleFormat-> setBold ();
/ / Определение размера текста
$ TitleFormat-> SETSIZE ( "13");
/ / Определение цвета текста
$ TitleFormat-> SetColor ( "Флот");
/ / Определение границ ширины основания в "толстых"
$ TitleFormat-> setBottom (2);
/ / Определение цвета границ базы
$ TitleFormat-> setBottomColor ( "Флот");
/ / Определение согласования особое значение
$ TitleFormat-> setAlign ( "слияние");
/ / Добавление заголовка в verxnuyu левую ячейку листа
/ / Отправить его в строке заголовка и объект формата
$ Корзина-> Создать (0,0, $ titleText, $ TitleFormat);
/ / Добавить TREX клеток pustyx слияния
$ Корзина-> Создать (0,1 ,"",$ TitleFormat);
$ Корзина-> Создать (0,2 ,"",$ TitleFormat);
$ Корзина-> Создать (0,3 ,"",$ TitleFormat);
/ / Высота строки
$ Корзина-> setRow (0,30);
/ / Определение ширины колонки для первых 4 колонки
$ Корзина-> setColumn (0,3,15);
Во-первых, заметьте, что я получил объект форматирования вызывая addFormat () через объект $ XLS, который представляет текущий список. Тогда я обратился к объекту специального формата (называемые методы setBold () говорить о себе - для более подробной информации см. документацию по API).
После завершения форматирования, я называю функцией записи () для объекта $ тележку, которая будет добавлена к ячейке, передавая объект как четвертый аргумент.
Единственным таможенных я здесь, это объединение четырех ячеек. Вызов setAlign ( "слияние") для объектов формата (как правило, вы используете для этого "налево", "вправо" или "центр"), я приказал Spreadsheet_Excel_Writer, что она должна объединить все клетки связаны с этим форматом. Вот почему я создал три пустых ячеек и форматирования применяются к ним.
Использование setRow () позволяет мне изменить высоту строки, sdelaya ее больше, чем установка высоты строки Excel по умолчанию. Этот метод имеет много дополнительных формат аргументов, которые позволяют, например, применить объект форматирования к текущей строке. Как setColumn () я установить ширину столбца и применить дальнейшего форматирования. Разница в том, что setRow () применяется только к одной строке, когда setColumn () применяется ко многим столбцам.
Теперь мне нужны данные для добавления к листу. Для упрощения примера (добавление в базу данных), я буду использовать индексированный массив ассоциативных массивов, который якобы является результатом отбора SQL.
Пункты $ = Array (
Array ( "desrciption" => "Попугай", "Цена" => 34,0, "Количество" => 1),
Array ( "desrciption" => "Змея", "Цена" => 16,5, "Количество" => 2),
Array ( "desrciption" => "мышь", "Цена" => 1,25, "Количество" => 10),
)
"Столбцы в базе данных" являются ключами массива - "desrciption", "Цена" и "Количество", второе, что нам необходимо сделать, это добавить заголовки столбцов с дополнительным названием "Итого", который мы будем скоро будет применяться:
/ / Определение способа форматирования
ColHeadingFormat $ = & $ XLS-> addFormat ();
$ ColHeadingFormat-> setBold ();
$ ColHeadingFormat-> setFontFamily ( "Helvetica");
$ ColHeadingFormat-> setBold ();
$ ColHeadingFormat-> SETSIZE ( "10");
$ ColHeadingFormat-> setAlign ( "центр");
/ / Массив с данными на заголовке столбца
$ ColNames = Array ( "Item", "Цена ($)"," Количество", "Тоталь");
/ / Добавить все названия одной задачи
/ / Написать пустые строки для лучшего сорта
$ Корзина-> writeRow (2,0, $ colNames, $ colHeadingFormat);
Вы уже видели форматирование. Вы еще не видели метода writeRow (). Этот метод делает то же, Write (), но позволяет добавлять массив данных слева направо, начиная с определенного номера строки или столбца. Этот метод значительно уменьшает код.
Я также хочу сделать заголовок, всегда видны, когда мы прокрутки страниц. В Excel - E может сделать это путем "замораживания" - выбирая блок ячеек, которые будут видны, когда пользователь будет перемещаться по списку, позволяя ему видеть заголовки столбцов (в данном случае), который объясняет, что эти данные predstvalvyut . То же самое возможно в PEAR:: Spreadsheet_Excel_Writer:
/ / Группа ячеек для замораживания
/ / 1 Аргумент - позиция вертикального объединение
/ / 2-й аргумент - объединение горизонтальное положение (0 = нет горизонтального объединение)
/ / 3rd аргумент - Top видимой строки на дне вертикальной интеграции
/ / 4-х аргумент - в левой колонке виден после goriznotalnogo ассоциации
$ Замораживания = Array (3,0,4,0);
/ / Замораживания клетки!
$ Корзина-> FreezePanes ($ замораживание);
Заметим, что "замораживание" было применено непосредственно объектом $ корзине, а не объектом формата, потому что она была применена на несколько клеток. С другой стороны, форматирование было применено к отдельным ячейкам.
Наконец, я прохожу через предметы в сумке, добавление данных в список:
/ / Псевдо данные
Пункты $ = Array (
Array ( "desrciption" => "Попугай", "Цена" => 34,0, "Количество" => 1),
Array ( "desrciption" => "Змея", "Цена" => 16,5, "Количество" => 2),
Array ( "desrciption" => "мышь", "Цена" => 1,25, "Количество" => 10),
)
/ / Используйте это для отслеживания текущего номера строки
$ CurrentRow = 4;
/ / Пройдите через данные, добавляя их в список
FOREACH ($ предметы, как $ Item) (
/ / Создать каждого пункта на листе
$ Корзина-> writeRow ($ CurrentRow, 0, $ пункта);
$ CurrentRow + +;
)
, Которая использует все. Если Вы новичок ООП в PHP, на первый взгляд это может показаться немного охлаждения, но вы уже можете видеть, что все методы очень четко определены и можно понять их смысл только глядя на них. Идея притяжения одного объекта другим может стать для вас чудеса, но когда вы думаете о ней, кажется, что вы создаете объект Worksheet вызывая addWorksheetSheet (), и что Вы добавляете объекты форматирования ячеек, когда вы пишете () ( Создать) в листе.
<<Назад на верх Далее>>
|