- Выгрузка данных в Excel на php с помощью PHPExcel.
- Экспорт данных в Excel на PHP
- Возможности оформления и применения стилей ячеек
- Экспорт данных из таблицы MySQL в Excel
- Экспорт через PHPMyAdmin
- Результат:
- Экспорт через HTML таблицу
- Результат работы скрипта:
- Экспорт через PHPExcel
- Saved searches
- Use saved searches to filter your results more quickly
- Sadovikow/xls_export_php
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
Выгрузка данных в Excel на php с помощью PHPExcel.
Иногда в некоторых проектах появляется необходимость генерации отчетов в Excel. Вроде можно и так построить и красиво оформить отчет на странице, но заказчик просить именно в Excel что бы потом ему офлайн поработать с данными в таблице
Для того что бы сформировать файлы Excel мне понравилось работать с библиотекой PHPExcel. PHPExcel – набор классов PHP, который позволяет записывать различные форматы таблиц и управлять ими, а также считывать данные из файла.
В примере показано как записать массив данных в файл для скачивания:
Скачиваем и распаковываем последнею версию библиотеки с сайта phpexcel.codeplex.com ( или PHPExcel 1.8.0 )
# подключаем библиотеку require_once "$_SERVER[DOCUMENT_ROOT]/xls/PHPExcel.php"; # Массив с данными $res = array( '0' => array( 'data' => '20.11.2003', 'name' => 'Иванов П.С', 'mail' => 'ivano@exemle.com' ), '1' => array( 'data' => '20.13.2005', 'name' => 'Сидоров П.А', 'mail' => 'sidorov@exemle.com' ), '2' => array( 'data' => '23.11.2008', 'name' => 'Петров П.С', 'mail' => 'petrov@exemle.com' ) ); $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file"); $i = null; foreach($res as $val) < $i++; $objPHPExcel->setActiveSheetIndex(0)->setCellValue("A$i", $val[data]); $objPHPExcel->setActiveSheetIndex(0)->setCellValue("B$i", $val[name]); $objPHPExcel->setActiveSheetIndex(0)->setCellValue("C$i", $val[mail]); > $objPHPExcel->setActiveSheetIndex(0); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="stat.xlsx"'); header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1') header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output');
Экспорт данных в Excel на PHP
Создание новых файлов и выгрузки данных для программирования задача очень частая. Ранее уже рассматривались вопросы создания и записи данных в файл в PHP. Сегодня же рассмотрим создание файла Excel и выгрузка в него данных. Сфера применения такого подхода очень большая: от выгрузки прайс-листов до формирования сложных отчетов (для печати или отправки кому-либо).
Самым простым решением в таком случае, было бы формирование файла в формате SCV. MS Excel без особых сложностей сможет открыть такой файл и далее с этими данными можно работать привычными способами. Проблема только в том, что такой подход пригоден в основном для списочных или табличных форм данных. Если же мы имеем материал на вывод более сложный, возникнут сложности.
Для того, чтобы сформировать полноценный документ Excel со всеми возможностями оформления, удобнее будет воспользоваться библиотекой PHPExcel. Она включает в себя весь необходимый функционал по работе с файлами Excel. С ее помощью можно не только внести значения в нужные ячейки, но и объединять и применять отдельные стили оформления к каждой ячейке.
Далее разберем пример подключения и использования библиотеки PHPExcel.
// Подключение класса для работы с Excel
require_once("PHPExcel.php");
// Подключение класса для вывода данных в формате Excel
require_once("PHPExcel/Writer/Excel5.php");
// Создание объекта класса PHPExcel
$myXls = new PHPExcel();
// Указание на активный лист
$myXls->setActiveSheetIndex(0);
// Получение активного листа
$mySheet = $myXls->getActiveSheet();
// Указание названия листа книги
$mySheet->setTitle("Новый лист");
// Указываем значения для отдельных ячеек
$mySheet->setCellValue("A1", "1-я строка");
$mySheet->setCellValue("A2", "2-я строка");
$mySheet->setCellValue("A3", "3-я строка");
$mySheet->setCellValue("B1", "2-й столбец");
// HTTP-заголовки
header ("Expires: Mon, 1 Apr 1974 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D,d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/vnd.ms-excel");
header ("Content-Disposition: attachment; filename=myFile.xls");
// Вывод файла
$objWriter = new PHPExcel_Writer_Excel5($myXls);
$objWriter->save("php://output");
Возможности оформления и применения стилей ячеек
// Выделить жерным
$mySheet ->getStyle("A1")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
// Выделение цветом
$mySheet ->getStyle("A1")->getFill()->getStartColor()->setRGB("FF0000");
// Положение текста по центру
$sheet->getStyle("A1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// Назначение ширины столбцов
$mySheet ->getColumnDimension("A")->setWidth(50);
// Назначение высоты строк
$mySheet ->getRowDimension(1)->setRowHeight(16);
// Автоматическое назначение ширины столбца
$mySheet ->getColumnDimension("A")->setAutoSize(true);
Экспорт данных из таблицы MySQL в Excel
Если нужно быстро и единоразово выгрузить данные из таблицы MySQL в Exel файл, то помогут следующие способы:
Экспорт через PHPMyAdmin
В PHPMyAdmin при экспорте можно выбрать формат «CSV for MS Excel»:
Результат:
Экспорт через HTML таблицу
prepare(«SELECT * FROM `test`»); $sth->execute(); $items = $sth->fetchAll(PDO::FETCH_ASSOC); ?>
Результат работы скрипта:
Экспорт через PHPExcel
//spl_autoload_unregister('autoload'); require_once __DIR__ . '/PHPExcel/Classes/PHPExcel.php'; require_once __DIR__ . '/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php'; $xls = new PHPExcel(); $xls->setActiveSheetIndex(0); $sheet = $xls->getActiveSheet(); // Шапка $sheet->getStyle("A1:D1")->getFont()->setBold(true); $sheet->setCellValue("A1", 'ID'); $sheet->setCellValue("B1", 'Категория'); $sheet->setCellValue("C1", 'Название'); $sheet->setCellValue("D1", 'Описание'); // Выборка из БД $dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль'); $sth = $dbh->prepare("SELECT * FROM `test`"); $items = $sth->fetch(PDO::FETCH_ASSOC); $index = 2; foreach ($items as $row) < $sheet->setCellValue("A" . $index, $row['id']); $sheet->setCellValue("B" . $index, $row['category']); $sheet->setCellValue("C" . $index, $row['name']); $sheet->setCellValue("D" . $index, $row['name']); $index++; > // Отдача файла в браузер header("Expires: Mon, 1 Apr 1974 05:00:00 GMT"); header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-type: application/vnd.ms-excel" ); header("Content-Disposition: attachment; filename=prods.xlsx"); $objWriter = new PHPExcel_Writer_Excel2007($xls); $objWriter->save('php://output'); exit();
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Экспорт таблицы в Excel при помощи PHP
Sadovikow/xls_export_php
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Экспорт таблицы HTML в Excel Экспорт таблицы в Excel при помощи PHP
У многих возникает проблема с экспортом простых HTML таблиц в Excel (*.xls). Сегодня мы покажем, как это можно сделать простым способом, не применяя дополнительных библиотек, используя PHP
Допустим у нас имеется любая HTML таблица (table). Необходимо выгрузить её в Excel при нажатии кнопки.
Добавим кнопку «сформировать Excel»:
form action pl-s">xls.php" method pl-s">POST"> input type pl-s">hidden" name pl-s">data" id pl-s">xls_data" value=""> input type pl-s">hidden" name pl-s">report_name" value pl-s">x_report"> input type pl-s">submit" value pl-s">Excel" class pl-s">r_report_button--excel" disabled> form>
xls_data — Данные, которые передаем, в данном случае таблица.
report_name — Имя отчета
r_report_button — Сабмит. Кнопка отправки.
Теперь скрипт (jQuery), который поможет отправить таблицу POST-запросом:
$(document).ready(function() $('.r_report_button--excel').attr('disabled', false); var excel_data = $('#x_report_table').html(); var report_data = $('.report_table').html(); $('#xls_data').val(excel_data); $('#report_data').val(report_data); >);
Активируем кнопку, как страница прогрузится до конца (нужно, если реально огромный объем данных).
Hidden поля заполняются данными из таблицы. При нажатии кнопки запрос отправляется в файл xls.php
header('Content-Type: application/vnd.ms-excel; charset=utf-8;'); header('Content-disposition: attachment; filename='.$_POST["report_name"].'_'.date("d-m-Y").'.xls'); header("Content-Transfer-Encoding: binary "); echo ' '; echo ''; echo $_POST["data"]; echo '
'; echo '
'; echo '';
В данном коде реализована формирование таблицы при помощи HTML. Заголовки нужны для корректной кодировки, очень важно, если имеется кириллица.
Всё очень просто, абсолютно любая таблица может спокойно быть экспортирована в Excel!