Инструменты пользователя

Инструменты сайта


php_generacija_otchetov

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

php_generacija_otchetov [2019/01/04 08:44] (текущий)
Строка 1: Строка 1:
 +====== PHP - генерация отчетов ======
 +{{htmlmetatags>​
 +metatag-description=(PHPExcel – библиотека,​ предназначенная для обработки данных формата MS Excel.)
 +}}
 +{{ ::​phpexcel_01.png?​nolink |}}
 +====== Экспорт в MS Excel ======
 +В [[PHP]] существует несколько библиотек облегчающих генерацию отчетов в формат файла .xlsx (нового формата MS Excel начиная с версии 2007):
 +  * [[http://​pear.php.net/​package/​Spreadsheet_Excel_Writer|Spreadsheet_Excel_Writer]]
 +
 +===== PHPExcel =====
 +  * Homepage: [[https://​github.com/​PHPOffice/​PHPExcel|PHPExcel - OpenXML - Create Excel2007 documents in PHP - Spreadsheet engine]].
 +
 +
 +Библиотека очень хорошо документирована,​ на сайте достаточное количество разнообразные примеров. Некоторые возможности библиотеки PHPExcel:
 +  - Установка размеров ячеек
 +  - Цвет текста
 +  - Размеры текста
 +  - Шрифты
 +  - Заливка цветом области
 +  - Рамки
 +  - Работа с разными листами
 +  - Вставка в ячейки формул
 +  - Вставка в ячейки активных (кликабельных) ссылок
 +
 +<​note>​PHPExcel [[http://​phpexcel.codeplex.com/​discussions/​57931|не умеет сортировать в документе Excel]]. Любые сортировки должны быть сделаны средствами [[PHP]], до создания файла.</​note>​
 +
 +  * **Пример**. Генерация документа с двумя листами,​ заполнение его содержимым. Созданный файл предлагается клиенту сохранить. После сохранения файл у пользователя,​ файл на сервере удаляется.<​file>​
 +<?php
 +error_reporting(E_ALL);​
 +include '​PHPExcel.php';​
 +include '​PHPExcel/​Writer/​Excel2007.php';​
 +
 +// Create new PHPExcel object
 +echo date('​H:​i:​s'​) . " Create new PHPExcel object\n";​
 +$objPHPExcel = new PHPExcel();
 +
 +// Установить свойства документа. Видны в Office 2010  (в LibreOffice эти свойства не видны)
 +$objPHPExcel->​getProperties()->​setCreator(""​);​ // Автор
 +$objPHPExcel->​getProperties()->​setLastModifiedBy(""​);​
 +$objPHPExcel->​getProperties()->​setTitle("​LCR"​);​ // Название
 +$objPHPExcel->​getProperties()->​setSubject("​Office 2007"​);​ // Тема ​
 +$objPHPExcel->​getProperties()->​setDescription("​LCR"​);​ // Примечания
 +
 +
 +// Add some data
 +echo date('​H:​i:​s'​) . " Add some data\n";​
 +$objPHPExcel->​setActiveSheetIndex(0);​
 +$objPHPExcel->​getActiveSheet()->​SetCellValue('​A1',​ '​Hello'​);​
 +$objPHPExcel->​getActiveSheet()->​SetCellValue('​B2',​ '​world!'​);​
 +$objPHPExcel->​getActiveSheet()->​SetCellValue('​C1',​ '​Hello'​);​
 +$objPHPExcel->​getActiveSheet()->​SetCellValue('​D2',​ '​world!'​);​
 +
 +// Rename sheet
 +echo date('​H:​i:​s'​) . " Rename sheet\n";​
 +$objPHPExcel->​getActiveSheet()->​setTitle('​LCR'​);​
 +
 +// Create a new worksheet, after the default sheet
 +echo date('​H:​i:​s'​) . " Create new Worksheet object\n";​
 +$objPHPExcel->​createSheet();​
 +$objPHPExcel->​setActiveSheetIndex(1);​
 +$objPHPExcel->​getActiveSheet()->​SetCellValue('​A1',​ '​Code'​);​
 +$objPHPExcel->​getActiveSheet()->​SetCellValue('​B2',​ '​Destination!'​);​
 +// Rename sheet
 +echo date('​H:​i:​s'​) . " Rename sheet\n";​
 +$objPHPExcel->​getActiveSheet()->​setTitle('​Code'​);​
 +
 +// Save Excel 2007 file
 +$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);​
 +//​$objWriter->​save(str_replace('​.php',​ '​.xlsx',​ __FILE__));
 +
 +$objWriter->​save('​cdr.xlsx'​);​
 +$file = "​cdr.xlsx";​
 +
 +if (file_exists($file)) {
 +    // redirect output to client browser ​
 +    header('​Content-Description:​ File Transfer'​);​
 +    header('​Content-Type:​ application/​vnd.openxmlformats-officedocument.spreadsheetml.sheet'​);​
 +    header('​Content-Disposition:​ attachment; filename='​.basename($file));​
 +    header('​Content-Transfer-Encoding:​ binary'​);​
 +    header('​Expires:​ 0');
 +    header('​Cache-Control:​ must-revalidate'​);​
 +    header('​Pragma:​ public'​);​
 +    header('​Content-Length:​ ' . filesize($file));​
 +    ob_clean();
 +    flush();
 +    readfile($file);​
 +    unlink($file);​ //  удаляем файл
 +}
 +?>
 +</​file>​
  
php_generacija_otchetov.txt · Последние изменения: 2019/01/04 08:44 (внешнее изменение)