Demo

Выгрузка данных в 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');

Источник

Читайте также:  self-signed.badssl.com

Экспорт данных в 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);

Источник

Читайте также:  Php http сервис 1с

Экспорт данных из таблицы MySQL в Excel

Если нужно быстро и единоразово выгрузить данные из таблицы MySQL в Exel файл, то помогут следующие способы:

Экспорт через PHPMyAdmin

В PHPMyAdmin при экспорте можно выбрать формат «CSV for MS Excel»:

Экспорт через PHPMyAdmin

Excel будет сбита кодировка

Notepad++ изменить кодировку на ANSI:

Результат:

Экспорт через HTML таблицу

prepare(«SELECT * FROM `test`»); $sth->execute(); $items = $sth->fetchAll(PDO::FETCH_ASSOC); ?>

ID Категория Название Описание

Результат работы скрипта:

Экспорт через 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?

Читайте также:  Примеры карточки товара html css

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!

Источник

Оцените статью