Выгрузка данных в Excel с помощью PHP
Выгрузка данных в Excel с помощью PHP

С чтением данных из excel файлов разобрались, теперь разберемся как создавать и записывать данные в excel формате. Так же как и для чтения, мы будем использовать PHPExcel. Просто записать таблицу данных не сложно, а вот добавлять форматирование для ячеек уже сложнее. Давайте сначала попробуем просто записать данные.

Создадим для этого функцию, которая будет двойной массив выгружать в excel файл.

Теперь пример использования такой функции

Если вы хотите добавлять ячейкам различные форматы (цвет и размер шрифта, склеивание, цвет ячейки, размер ячейки и др.), то перед созданием PHPExcel_Writer_Excel5 необходимо вызывать нужные функции. Рассмотрим некоторые из них:

 

Делает слияние ячеек в 5й строке с 1 по 6 колонку

$aSheet->getStyleByColumnAndRow(row,column)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT) — устанавливает формат данных для ячейки в текстовый формат. Так же вместо FORMAT_TEXT можно использовать FORMAT_GENERAL, FORMAT_NUMBER, FORMAT_DATE_DATETIME и многие другие, которые вы найдете в документаци.

На самом деле функций с форматированием ячеек очень много и всех в одном посте не описать, да и приходилось мне пользоваться только теми, что я описал. Посмотреть все возможные функции можно просмотрев php скрипты, которые находятся в папке скачанного дистрибутива PHPExcel/Style. Если у кого-то что-то не будет получаться, можете писать о проблемах в комментариях, постараюсь помочь.

Похожие записи

Комментариев (16).

  1. Александр

    Хороший материал, у меня чтение получилось сделать, а вот запись файла никак не хочет работать. Выдаёт :

    Warning: Cannot modify header information — headers already sent by (output started at /home/develo/public_html/phpexel/index.php:6) in /home/develo/public_html/phpexel/index.php on line 62

    Warning: Cannot modify header information — headers already sent by (output started at /home/develo/public_html/phpexel/index.php:6) in /home/develo/public_html/phpexel/index.php on line 63

    Warning: Cannot modify header information — headers already sent by (output started at /home/develo/public_html/phpexel/index.php:6) in /home/develo/public_html/phpexel/index.php on line 64

    в этих строках начинает работать функция header(), что ему не нравится — не пойму. Вы с такой проблемой не сталкивались. С уважением Александр!

  2. Александр

    Разрешил проблему, кстати Вы не пробовали интегрировать этот фрэймворк в какую-нибудь cms ?

  3. DanisimO

    Да какой мне в этом смысл ?) Это создатели CMS пусть думают об интеграциях функционала в свои CMS

  4. Александр

    Куда пропала Ваша статья http://denweb.org/chtenie-excel-fajlov-php-skriptom/ ?

  5. marsei

    вызываю на станице описанную функцию, браузер скачивает файл, открываю файл — пусто? че не так делаю? ткни носом )))

  6. DanisimO

    Возможно Вы вызываете функцию с пустым или неправильным массивом

  7. Nukolay

    Всё сделал так как описано выше, но у меня создаётся пустой excel-документ! подскажите почему если есть идеи!

  8. DanisimO

    Скорей всего у вас в коде где-то ошибка, которая прерывает работу скрипта. Попробуйте включить отображение всех ошибок в php.ini, а так же display_startup_errors.

  9. Martin256

    при загрузки страницы ругается на ошибку синтаксиса в строке
    $aSheet->setCellValueByColumnAndRow($j,$writer_i,»$val»); // записываем данные массива в ячейку

  10. DanisimO

    Замените » на обычные ковычки, блог просто вместо обычных ковычек свои подставляет.

  11. ask_s

    Подскажите, пожалуйста, как можно выгрузить в excel одномерный массив?

  12. Антон

    DanisimO, есть много вопросов к Вам по поводу работы Excel с php,
    напишете мне на почту anton.ru-92@mail.ru

  13. Егор

    DanisimO, добрый день.
    Почитал, скопировал ваш скрипт, скачал архив PHPExcel, но так и не разобрался в документации в нему.
    Мне нужно загружать на сайт (в текстовый файл) из Экселя (xls) большой прайс в 200 столбцов и ~4500 строк.
    и, соответственно, выгружать его обратно в том же виде.
    Я бы давно переделал сайт на базу данных и избавился от этого страшного 3 — метрового прайса, но структура его настолько страшна, что я пока не придумал, как безболезненно перевести сайт на базу данных, не потеряв позиции сайта в поисковиках. Сайту 12 лет…
    Пожалуйста, ответьте на почту, я хочу вас поэксплуатировать и, возможно, даже полюбить в серое вещество головного мозга…
    А если серьезно — просто прошу помочь.
    Спасибо.

  14. Армина

    Помогите пожалуйста, Шеф сказал создать базу клиентов на 3000 наименований разных организаций за несколько часов , что в принципе не возможно, как мне выгрузить с 2Гиса или подобных сайтов? Я в этом вообще не разбираюсь!

  15. Роман

    Здравствуйте DanisimO, можно ли так настроить данный фреймворк, чтобы при транспорте из exel в массив php, он данные из склеенных ячеек дублировал во все внутренние ячейки после их расклеивания (в смысле в массиве чтобы данные были во всех индексах) .. ?

Ваш комментарий

Я не робот