Конвертер php в excel
Генерация XLS на PHP
Очень часто необходимо делать экспорт каких-то данных, например, из базы данных в Excel-файл. Например, какой-нибудь прайс-лист преобразовать в удобный формат из базы данных и сгенерировать XLS-файл, который смогут без проблем скачать посетители. И вот как генерировать XLS на PHP, я расскажу в этой статье.
Нам потребуется с Вами отдельная библиотека, которая позволяет работать с Excel-файлами. Называется она PHPExcel, и скачать её можно здесь: http://phpexcel.codeplex.com.
Давайте её применим для генерация Excel-файла через PHP-скрипт:
setActiveSheetIndex(0); // Делаем активной первую страницу и получаем её
$page->setCellValue(“A1”, “Hello”); // Добавляем в ячейку A1 слово “Hello”
$page->setCellValue(“A2”, “World!”); // Добавляем в ячейку A2 слово “World!”
$page->setCellValue(“B1”, “MyRusakov.ru”); // Добавляем в ячейку B1 слово “MyRusakov.ru”
$page->setTitle(“Test”); // Ставим заголовок “Test” на странице
/* Начинаем готовиться к записи информации в xlsx-файл */
$objWriter = PHPExcel_IOFactory::createWriter($phpexcel, ‘Excel2007’);
/* Записываем в файл */
$objWriter->save(“test.xlsx”);
?>
После выполнения скрипта у Вас рядом с PHP-файлом появится XLSX-файл, который Вы легко сможете открыть в Excel 2007 или более поздней версии.
Вообще, библиотека достаточно большая и там есть очень много возможностей. Но представленных в данной статье уже более, чем достаточно для большинства случаев.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 12 ):
А можно с помощью этой библиотеки дополнить уже существующий XLS файл?
Спасибо. Но есть вопрос. Как скажем организовать, чтобы файл не записывался, а выдавался на скачивание? Понимаю, что вопрос странный, но опыта в php мало.
В таких случаях генерируют файл, затем дают на него ссылку. А раз в сутки запускается скрипт и удаляет все эти файлы. Так будет сделать правильно.
По поводу подключения к joomla. Похоже сперва надо сделать изменения, указанные в данной ссылке: http://klevismiho.com/phpexcel-and-joomla/ После этого работает стабильно.
У Вас опечатка // Добавляем в ячейку A2 слово “World1” Заместо знака восклицания, у Вас стоит “1”
Добрый вечер, скажите, а куда класть данную библиотеку? а то пример копирую, он не работает
выполняю скрипт,но файл не появляется
Михаил, а можно более подробно изложить использование данной библиотеки для простого примера: на страницу выводится html-таблица и значок(типа “сгенерировать таблицу”) в углу. И только после клика по этому значку генерируется excel-файл с сохранением всех стилей (ну или большей их части по возможности). на сайте разработчика не понятно описано все. заранее спасибо!
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Обработка и оформление отчетов в Excel на PHP
Не редко при разработке некоего проекта, возникает необходимость в формировании отчетной статистики. Если проект разрабатывается на Delphi, C# или к примеру, на С++ и под Windows, то тут проблем нет. Всего лишь необходимо воспользоваться COM объектом. Но дела обстоят иначе, если необходимо сформировать отчет в формате excel на PHP. И чтобы это творение функционировало на UNIX-подобных системах. Но, к счастью, не так все плохо. И библиотек для этого хватает. Я свой выбор остановил на PHPExcel. Я уже пару лет работаю с этой библиотекой, и остаюсь доволен. Поскольку она является кроссплатформенной, то не возникает проблем с переносимостью.
PHPExcel позволяет производить импорт и экспорт данных в excel. Применять различные стили оформления к отчетам. В общем, все на высоте. Даже есть возможность работы с формулами. Только необходимо учитывать, что вся работа (чтение и запись) должна вестись в кодировке utf-8.
Установка библиотеки
Для работы необходима версия PHP 5.2.0 или выше. А также необходимы следующие расширения: php_zip, php_xml и php_gd2. Скачать библиотеку можно отсюда.
С помощью библиотеки PHPExcel можно записывать данные в следующие форматы:
Импорт данных из PHP в Excel
Рассмотрим пример по формированию таблицы умножения.
Далее нам необходимо получить наш *.xls файл. Здесь можно пойти двумя путями. Если предположим у вас интернет магазин, и клиент хочет скачать прайс лист, то будет лучше прибегнуть к такому выводу:
Здесь сформированные данные сразу “выплюнутся” в браузер. Однако, если вам нужно файл сохранить, а не “выбросить” его сразу, то не нужно выводить HTTP-заголовки и вместо “php://output” следует указать путь к вашему файлу. Помните что каталог, в котором предполагается создание файла, должен иметь права на запись. Это касается UNIX-подобных систем.
Рассмотрим еще на примере три полезные инструкции:
Также обратите внимание на следующие необходимые для работы с отчетом методы:
Как мы видим, вышеприведенные методы являются парными. Поэтому мы можем работать с ячейками используя строковое или числовое представление координат. Что конечно же является дополнительным преимуществом в работе.
Оформление отчета средствами PHP в Excel
Очень часто возникает необходимость выделить в отчете некоторые данные. Сделать выделение шрифта или применить рамку с заливкой фона для некоторых ячеек и т.д. Что позволяет сконцентрироваться на наиболее важной информации (правда может и наоборот отвлечь). Для этих целей в библиотеке PHPExcel есть целый набор стилей, которые можно применять к ячейкам в excel. Есть конечно в этой библиотеке небольшой “минус” – нельзя применить стиль к нескольким ячейкам одновременно, а только к каждой индивидуально. Но это не создает дискомфорта при разработке web-приложений.
Назначить стиль ячейке можно тремя способами:
Заливка
Значением параметра fill является массив со следующими необязательными параметрами:
Или можно использовать следующие методы:
Вставка изображений
Довольно редко, но бывает полезным произвести вставку изображения в отчет. Это может быть логотип, схема и т.д. Для работы нам понадобятся следующие методы:
Код демонстрирующий алгоритм вставки изображения приведен ниже:
Вот так выглядит отчет со вставленным изображением:
Шрифт
В качестве значения параметра font указывается массив, который содержит следующие необязательные параметры:
Или воспользоваться следующими методами:
Рамка
В качестве значения параметра borders указывается массив, который содержит следующие необязательными параметры:
Так же можно прибегнуть к использованию следующих методов:
$PHPExcel_Style->getBorders()->getLeft()->applyFromArray(array(‘style’ =>PHPExcel_Style_Border::BORDER_DASHDOT,’color’ => array(‘rgb’ => ’808080′)));
$PHPExcel_Style->getBorders()->getRight()->applyFromArray(array(‘style’ =>PHPExcel_Style_Border::BORDER_DASHDOT,’color’ => array(‘rgb’ => ’808080′)));
$PHPExcel_Style->getBorders()->getTop()->applyFromArray(array(‘style’ =>PHPExcel_Style_Border::BORDER_DASHDOT,’color’ => array(‘rgb’ => ’808080′)));
$PHPExcel_Style->getBorders()->getBottom()->applyFromArray(array(‘style’ =>PHPExcel_Style_Border::BORDER_DASHDOT,’color’ => array(‘rgb’ => ’808080′)));
$PHPExcel_Style->getBorders()->getDiagonal()->applyFromArray(array(‘style’ => PHPExcel_Style_Border::BORDER_DASHDOT,’color’ => array(‘rgb’ => ’808080′)));
$PHPExcel_Style->getBorders()->setDiagonalDirection(array(‘style’ =>PHPExcel_Style_Border::BORDER_DASHDOT,’color’ => array(‘rgb’ => ’808080′))).
Выравнивание
Значением параметра alignment является массив, который принимает на вход четыре необязательных параметра:
Или использовать следующие методы:
Формат представления данных
Параметр numberformat представляет собой массив, который включает только один параметр: code — формат данных ячейки.
Список возможных форматов
| FORMAT_GENERAL | General |
| FORMAT_TEXT | @ |
| FORMAT_NUMBER | 0 |
| FORMAT_NUMBER_00 | 0.00 |
| FORMAT_NUMBER_COMMA_SEPARATED1 | #,##0.00 |
| FORMAT_NUMBER_COMMA_SEPARATED2 | #,##0.00_- |
| FORMAT_PERCENTAGE | 0% |
| FORMAT_PERCENTAGE_00 | 0.00% |
| FORMAT_DATE_YYYYMMDD2 | yyyy-mm-dd |
| FORMAT_DATE_YYYYMMDD | yy-mm-dd |
| FORMAT_DATE_DDMMYYYY | dd/mm/yy |
| FORMAT_DATE_DMYSLASH | d/m/y |
| FORMAT_DATE_DMYMINUS | d-m-y |
| FORMAT_DATE_DMMINUS | d-m |
| FORMAT_DATE_MYMINUS | m-y |
| FORMAT_DATE_XLSX14 | mm-dd-yy |
| FORMAT_DATE_XLSX15 | d-mmm-yy |
| FORMAT_DATE_XLSX16 | d-mmm |
| FORMAT_DATE_XLSX17 | mmm-yy |
| FORMAT_DATE_XLSX22 | m/d/yy h:mm |
| FORMAT_DATE_DATETIME | d/m/y h:mm |
| FORMAT_DATE_TIME1 | h:mm AM/PM |
| FORMAT_DATE_TIME2 | h:mm:ss AM/PM |
| FORMAT_DATE_TIME3 | h:mm |
| FORMAT_DATE_TIME4 | h:mm:ss |
| FORMAT_DATE_TIME5 | mm:ss |
| FORMAT_DATE_TIME6 | h:mm:ss |
| FORMAT_DATE_TIME7 | i:s.S |
| FORMAT_DATE_TIME8 | h:mm:ss |
| FORMAT_DATE_YYYYMMDDSLASH | yy/mm/dd; @ |
| FORMAT_CURRENCY_USD_SIMPLE | “$”#,##0.00_-;@ |
| FORMAT_CURRENCY_USD | $#,##0_- |
| FORMAT_CURRENCY_EUR_SIMPLE | [$EUR ]#,##0.00_- |
Пример настройки для формата данных ячейки:
А можно и воспользоваться методом:
Защита ячеек
В качестве значения параметра protection выступает массив, который содержит два необязательных параметра:
Или использовать следующие методы:
Теперь мы знаем, какие есть настройки стилей и какие присутствуют параметры у каждого стиля. Сейчас мы к ячейкам таблицы применим стиль оформления, но проделаем это тремя способами. Первый способ заключается в создании массива настроек, который в качестве параметра мы передадим в метод applyFromArray, класса PHPExcel_Style.
Далее мы применим созданный нами стиль к ячейкам excel.
Сейчас применим тот же стиль, но используя другую методику.
Вот что у нас получилось:
Для получения данных о стиле конкретной ячейки необходимо использовать один из следующих методов, который вернет экземпляра класса PHPExcel_Style:
А теперь рассмотрим третий способ назначения стиля ячейкам путем дублирования стиля. Пример использования представлен ниже (предполагается, что к ячейке “B2” применен некий стиль и мы его хотим продублировать для диапазона ячеек “F2:F10”):
Добавление комментариев
Я думаю, что не часто кто-то пользуется возможностью добавления комментариев к ячейкам, но это сугубо мое личное мнение, однако такая возможность имеется. Добавить комментарий к ячейке довольно просто, что видно из примера ниже:
Следует заметить, что при повторном вызове метода createTextRun() новый комментарий добавится к уже существующему, а не заменит его. Следует отметить, что данный метод возвращает объект класса PHPExcel_RichText_Run, у которого имеются методы для установки и получения параметров шрифта:
Вот какой комментарий мы должны получить:
Вставка ссылки
Вставка ссылок в ячейку тоже не вызывает каких-либо затруднений, что можно видеть из нижеописанного примера:
Так же в виде ссылки может быть использован, к примеру, email адрес: mailto:example@mail.com.
Чтение данных из Excel
Формировать отчеты и применять к ним стили это конечно отлично. Но на этом возможности библиотеки PHPExcel не заканчиваются. Ну что же, посмотрим на что она еще способна. А способна она еще и читать данные из файлов формата *.xls / *.xlsx.
С помощью библиотеки PHPExcel можно читать следующие форматы:
Для работы нам понадобятся объекты двух классов:
Для демонстрации выведем данные из таблицы с информацией об автомобилях.
Пример чтения файла представлен ниже:
Первый вариант
Второй вариант
В первом варианте мы производим чтение данных, из ячеек используя итераторы. А во втором, мы используем индексную адресацию для обращения и получения данных из ячеек листа. Получить данные о количестве строк и столбцов, можно воспользовавшись следующими методами класса PHPExcel_Worksheet:
Другие полезные методы
Возможностей по работе с отчетами формата excel с использованием PHP как мы видим, достаточно много. Но мы рассмотрим еще несколько полезных методов, которые могут оказаться весьма полезны в работе:
Примечание: Методы stringFromColumnIndex и columnIndexFromString примечательны тем, что их можно использовать без создания объекта класса. Пример использования представлен ниже:
С помощью продемонстрированных возможностей, можно формировать и считывать любые отчеты в виде файлов, формата excel. А также были продемонстрированы почти все возможные методы для работы со стилями.
Работа с Excel средствами PHP
PHPExcel — библиотека для создания и чтения данных из файлов формата OpenXML (который используется в MS Excel 2007). С ее помощью можно считывать из файлов, записывать в файлы, форматировать содержимое, работать с формулами и т.д. Для работы PHPExcel требуется версия PHP 5.2 или выше, с установленными библиотеками Zip, XML и GD2.
Установка PHPExcel
Первым делом библиотеку необходимо скачать. Для этого переходим на официальный сайт библиотеки и скачиваем архив PHPExcel-1.7.8.zip. После распаковки мы получим несколько файлов и папок:
Файлы — это различные описания по предыдущим версиям, лицензионное соглашение и очень краткая инструкция по установке. Далее, в папке Classes, содержится непосредственно сама библиотека PHPExcel — эту папку необходимо скопировать в корень нашего скрипта.
В папке Documentation содержится документация по библиотеке на английском языке. В папке Tests — примеры по использованию библиотеки.
Создание Excel-файла
Итак, давайте создадим файл makeexcel.php и начинаем работать с ним. Для начала нам необходимо подключить главный файл библиотеки PHPExcel.php (который находится в папке Classes) и создать объект класса PHPExcel:
Настройки листа книги Excel
Документ Excel состоит из книг, а каждая книга в свою очередь, состоит из листов. Далее лист состоит из набора ячеек, доступ к которым осуществляется по координатам. То есть у нас есть столбцы, которые имеют буквенные имена (А, В, С и т.д) и есть строки, которые пронумерованы. Значит, что бы получить доступ к первой ячейке нужно указать код А1. Точно также мы с помощью библиотеки будем получать доступ к каждой ячейке.
Итак, первым делом необходимо выбрать активный лист, на который мы будем выводить данные и получить объект этого листа:
Если Вы захотите указать активным какой то другой лист, то вначале его необходимо создать, при помощи метода:
Затем, по аналогии, указываем индекс и получаем объект активного листа.
Далее при помощи метода setTitle(‘Прайс лист’) задаем название нашего листа.
Если нужно, можно при печати выводить шапку и подвал листа:
Обратите внимание на передаваемые параметры:
Затем указываем настройки шрифта по умолчанию:
Наполнение документа данными
Для начала давайте зададим ширину столбцов (в символьных единицах), которые нам понадобятся:
Теперь заполним несколько ячеек текстом:
Далее давайте в ячейку D4 запишем текущую дату:
Стилизация данных
Теперь, по аналогии, применим стили к остальным ячейкам:
Сохранение документа
Осталось только сохранить наш документ:
Если нужно вывести документ в браузер
Первый заголовок указывает браузеру тип открываемого контента — это документ формата Excel. Второй — говорит браузеру, что документ необходимо отдать пользователю на скачивание под именем simple.xlsx.
Добавление формул
Формула Excel — это математическое выражение, которое создается для вычисления результата и которое может зависеть от содержимого других ячеек. Формула в ячейке Excel может содержать данные, ссылки на другие ячейки, а также обозначение действий, которые необходимо выполнить.
Использование ссылок на ячейки позволяет пересчитывать результат по формулам, когда происходят изменения содержимого ячеек, включенных в формулы. Формулы Excel начинаются со знака =. Скобки ( ) могут использоваться для определения порядка математических операции.
PHPExcel тоже поддерживает добавление формул в ячейки. Установить формулу можно так:
Чтение Excel-файла
Самый простой вариант — считать все таблицы (на всех листах) и записать данные в трехмерный массив:
Генерация документов в doc, excel, pdf и других форматах на сервере
Выгрузка отчетов в различных форматах — типовая задача для многих проектов. И сейчас есть немало инструментов для этого. Среди них есть интересный вариант, который применяется, как мне кажется, не часто, но он однозначно стоит внимания. Потому что позволяет получить документ в нужном формате буквально одной командой. О нем и расскажу.
Я буду не многословен и сразу скажу, что речь идет о конвертере, встроенном в пакет LibreOffice. Вы можете запустить конвертацию из консоли, чтобы увидеть как это работает:
Эта команда конвертирует файл html.html в pdf файл. Количество поддерживаемых форматов впечатляет.
Выгода от использования такого инструмента очевидна. Вместо того, чтобы писать код для генерации документов в каждом из нужных форматов, просто создаем обычное html-представление. Далее сгенерированную страницу прогоняем через конвертер.
Запуск конвертации из PHP
Для установки конвертера на сервере придется установить пакет libreoffice-core:
Чтобы было удобно работать с утилитой из PHP, я написал обертку.
Обертка позволяет вам не думать о работе с временными файлами, подставляет в команду некоторые параметры по умолчанию, содержит константы с описанием доступных форматов, а также дает возможность задать таймаут на выполнение конвертации.
Для работы с оберткой подключаем ее к своему проекту через composer:
Использовать ее можно так:
В результате будет сформирован docx файл. Больше примеров можно найти на гитхабе.
Разумеется, в качестве бонуса можно запускать конвертацию в другую сторону — из doc в html и отображать содержимое офисных документов в браузере. Качество конвертации будет не всегда на высоте, но для каких-то случаев вполне подойдет.
Несколько граблей
Будет полезно рассказать про несколько особенностей, с которыми я столкнулся при работе с этой утилитой.
1. Применение CSS стилей. При преобразовании html в нужный формат имейте ввиду, что такая запись воспринимается корректно:
А такие записи будут обработаны точно так же, как если бы class мы совсем не указали:
2. При преобразовании html в нужный формат не всегда срабатывают описания стилей и иногда приходится экспериментировать, чтобы заработало. Например, так не работает:
3. Одно и то же преобразование можно выполнять с помощью разных конвертеров. При этом результат будет существенно отличаться. Если у вас на выходе получится не очень красивый документ, попробуйте принудительно задать используемый модуль, например:
4. Можно ли настроить ширину строк в таблице — для меня пока загадка. И в целом со стилизацией таблицы при преобразовании html в docx или pdf у меня возникли затруднения. Поэтому на мой взгляд подход трудно будет применять для генерации сложных печатных форм, таких как счет-фактура.
Генерация прайс-листа в формате Excel при помощи PHP. Phpexcel
Дата публикации: 2012-10-26
От автора: очень часто при разработке веб-приложений возникает задача создать прайс-лист товаров либо услуг какой то кампании в формате таблиц Microsoft Excel. Но при этом необходимо предусмотреть, чтобы он свободно генерировался на основе данных, хранящихся в базе данных.
В сегодняшнем уроке мы с Вами решим такую задачу. То есть мы научимся генерировать документ в формате таблиц Excel при помощи языка PHP и специальной библиотеки PHPExcel. Это очень мощная и очень широко применяемая библиотека с огромнейшим функционалом. Конечно, все ее возможности за один урок рассмотреть мы не сможем, но узнать основы и научиться с ней работать — мы вполне успеем.
План урока
1. Подготовка к уроку.
2. Установка библиотеки PHPExcel.
3. Основные настройки листа книги Excel.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
4. Наполнение документа данными.
5. Стилизация данных.
Детали учебника
Тема: PHP
Сложность: Средняя
Урок: Видео (.mp4)
Время: 01:31:02
Размер архива: 217 Mb
1. Подготовка к уроку.
Первое что нам потребуется для создания прайс-листа – это данные, которые в нем выводить. Для этого я подготовил базу данных (под названием price), в которой содержится всего одна табличка – tovar. В табличке содержится несколько наименований товара, для вывода в прайс-листе. Ее дамп Вы сможете взять из изходников к уроку.
Далее я подготовил очень простой скрипт, который вытаскивает данные из базы данных, а конкретнее из таблички tovar, и формирует из этих данных массив. С этим массивом мы с Вами и будем работать.
Скрипт включает в себя всего три файла:
Если Вы хотите использовать для вывода данных в формате EXCEL русские символы, то обязательно все файлы нужно сохранять в кодировке UTF8.
Далее давайте приведу код всех трех файлов. Файл config.php:
Как Вы видите, здесь все элементарно. Просто задаем четыре константы для хранения настроек подключения к базе данных. И собственно, выполняем подключение и выбор базы данных для работы. Далее устанавливаем кодировку запросов.
Следующий файл functions.php:
Здесь также все очень просто. Описана всего лишь одна функция, которая выполняет запрос к базе данных и формирует по результатам выборки массив. Далее я приведу распечатку этого массива.
И последний файл index.php:
В этом файле мы дальше будем вести все кодирование. Это пока лишь заготовка. Как Вы видите, вначале я подключаю файлы config.php и functions.php и вызываю функцию get_price(), для получения массива товаров.
Давайте я приведу распечатку этого массива (при помощи функции print_r()):
2. Установка библиотеки PHPExcel.
Первым делом библиотеку необходимо скачать. Для этого переходим на официальный сайт библиотеки — //phpexcel.codeplex.com/ :
И нажимаем по кнопке download. В результате скачивания у нас получится архив PHPExcel-1.7.7.zip. Давайте его распакуем. Как Вы видите, после распаковки у нас получилось несколько файлов и папок:
Файлы — это различные описания по предыдущим версиям, лицензионное соглашение и очень краткая инструкция по установке. Далее в папке Classes, содержится непосредственно сама библиотека PHPExcel – эту папку необходимо скопировать в корень нашего скрипта, что я и сделал.
В папке Documentation – содержится документация по библиотеке, но правда она на английском языке. Но все равно я Вам рекомендую с ней ознакомиться. Так как библиотека имеет огромнейший функционал, и конечно сегодня мы весь его не рассмотрим. А в документации Вы найдете много всего интересного.
В папке Tests – содержатся примеры по использованию библиотеки.
Итак, если Вы скопировали папку Classes в корень скрипта, то мы можем приступать к дальнейшей работе.
Итак, переходим в файл index.php и начинаем работать с ним. Теперь нам необходимо подключить главный файл библиотеки PHPExcel.php (который находится в папке Classes) к нашему скрипту и создать объект класса PHPExcel:
Для тех кто не знает класс – это своего рода чертеж или описательный элемент, какой то определенной сущности. То есть в нашем случае (если сказать простыми словами) класс PHPExcel.php описывает все методы (это обычные функции, только описанные в классе) и свойства (переменные класса) необходимые для вывода данных в формате Excel.
Для того что бы создать объект класса необходимо указать переменную ($objPHPExcel) затем поставить знак присвоения, далее ключевое слово new и указать имя класса. Объект – это такой тип переменной, который позволяет нам работать с методами и свойствами класса. То есть если мы создали объект, то мы получили доступ ко всему, что описано в классе.
На этом установка библиотеки завершена, можно приступать к работе с ней.
3. Основные настройки листа книги Excel.
Как Вы знаете, документ Excel состоит из книг, а каждая книга в свою очередь, состоит из листов. Далее лист состоит из набора ячеек, доступ к которым осуществляется по координатам. То есть у нас есть столбцы, которые имеют буквенные имена (А, В, С и т.д) и есть строки, которые пронумерованы. Значит, что бы получить доступ к первой ячейке нужно указать код А1. Точно также мы с помощью библиотеки будем получать доступ к каждой ячейке.
Итак, первым делом необходимо выбрать активный лист, на который мы будем выводить данные и получить объект этого листа.
Если Вы захотите указать активным какой то другой лист, то вначале его необходимо создать, при помощи метода:
Затем по аналогии, указываем индекс и получаем объект активного листа.
Теперь давайте сгенерируем наш первый документ Excel (правда конечно пока пустой), для этого в файл index.php в его конец добавим следующий код (далее весь код, который я буду приводить, следует вставлять перед этим кодом – то есть код который идет ниже должен быть в самом низу файла – это уже завершение скрипта. ):
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
В начале, обратите внимание, отправляем заголовки.
Первый – указываем браузеру тип открываемого контента – это документ формата Excel. И второй – указываем браузеру, что документ необходимо отдать пользователю на скачивание и тут же указываем имя скачиваемого файла (‘simple.xls’ ).
Теперь немного о версиях. Кроме версии Excel5, доступна также версия Excel2007, но так как у меня установлен MS Office 2003, то версия Excel2007 у меня просто не откроется. Поэтому я создаю документ версии Excel5.
Теперь давайте перейдем в браузер и посмотрим, что у нас получилось:
Как Вы видите, мы с Вами получили пустой документ в формате Excel, с одним активным листом.
Итак, вначале задаем ориентацию листа, при помощи метода setOrientation(), которому передаем константу, ORIENTATION_PORTRAIT, класса PHPExcel_Worksheet_PageSetup. Эта константа — означает, что ориентация страницы будет портретом.
Если Вы хотите расположить лист в виде альбомного листа, нужно методу setOrientation(), передать константу Worksheet_PageSetup::ORIENTATION_LANDSCAPE.
Обратите внимание, что перед методом setOrientation() необходимо вызвать метод getPageSetup() – который предоставит нам доступ к настройкам страницы (вернет объект класса, который отвечает за настройки страницы).
Далее вызываем метод SetPaperSize(), который позволяет задать размер страницы, для печати. Ему передаем параметром константу PAPERSIZE_A4, класса — PHPExcel_Worksheet_PageSetup. Что означает, что размер листа страницы будет установлен А4.
Это можно проверить, если открыть документ, в формате Excel и перейти в меню Файл, затем на пункт параметры страницы.
Далее по аналогии методы setRight(0.75), setLeft(0.75), setBottom(1) – задают соответственно правый, левый и нижний отступы документа.
Далее давайте при помощи метода setTitle(«Прайс лист») – зададим название нашего листа.
Затем при печати (если кому это нужно), можно выводить шапку и нижний футер листа. Такую возможность можно задать при помощи методов setOddHeader(«&CШапка нашего прайс-листа») и setOddFooter(‘&L&B’.$active_sheet->getTitle().’&RСтраница &P из &N’), которые задают соответственно — шапку и футер документа.
Обратите внимание на передаваемые параметры:
Для шапки – передаем строку — &C Шапка нашего прайс-листа (метка &C – означает, что текст нужно расположить по центру).
Полный список меток, можно посмотреть в документации. Я этот список Вам не привожу, так как он очень большой, да и многие из них Вам не понадобятся.
Затем указываем настройки шрифта по умолчанию. Это можно сделать при помощи последовательного вызова методов:
$objPHPExcel->getDefaultStyle()->getFont()->setName(‘Arial’) – задаем имя шрифта;
$objPHPExcel->getDefaultStyle()->getFont()->setSize(8); — задаем размер шрифта;
Теперь если сохранить изменения и сгенерировать наш документ, то можно увидеть что у нас изменилось название листа документа на Прайс-лист, и если открыть предварительный просмотр страницы, то можно увидеть как выводится шапка и футер документа.
4. Наполнение документа данными
Для начала давайте зададим ширину основных столбцов, которые нам понадобятся:

















