Сохранить сгенерированную страницу на php на лету в CSV

0 из 5, голосов: 0
445
Есть различные библиотеки для создания и скачивания файлов в формате Excel.

Но есть простой способ. Им поделился добрый человек des1roer на форуме: https://www.cyberforum.ru/php-beginners/thread1358535.html.

Обратите внимание, des1roer сначала задал вопрос, а потом (когда нашел решение) сам ответил в этой ветке форума.

А бывают ситуации, когда человек постит на форуме вопрос, самостоятельно находит решение, а на форуме пишет, что он нашел решение и вопрос решен. А как решил не пишет. А люди с поиска приходят и негодуют.

От себя добавлю - у меня никак не запускалось скачивание сгенерированной страницы. Только отображалась табличка в браузере. Помогло удаление лишнего невидимого спецсимвола в самом начале файла скрипта: при сохранении файла в кодировке UTF-8 я снял галочку "Add a Unicode Signature (BOM)". У меня редактор EmEditor, у Вас может быть другое название этой BOM-сигнатуры. Выкладываю файл с рабочим скриптом для скачивания.

Пример работы скрипта

Скачать zip-архив со скриптом

Код скрипта:

<?php
/*
// разкомментируйте строки ниже, если файл не будет загружаться
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
*/
//стандартный заголовок, которого обычно хватает
header('Content-Type: text/x-csv; charset=utf-8');
header("Content-Disposition: attachment;filename=".date("d-m-Y")."-export.xls");
header("Content-Transfer-Encoding: binary ");
/*
// Теперь можно выводить ранее полученные данные, будь то из MySQL
// будь то из файла, или же полученные в работе скрипта...
// для начала лучше использовать стандартную
// шапку для HTML страницы под вашу кодировку, к примеру utf-8
// чтобы корректно отображалась кириллица в EXCEL
// так же убедитесь что сам файл скрипта установлен в соответствующей
кодировке это можно посмотреть в любом PHP редакторе
// итак, шапка страницы:
*/
$csv_output ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="author" content="Andrey" />
<title>deamur zapishi.net</title>
</head>
<body>';
 
// Теперь данные в виде таблицы:
$csv_output .='<table border="1"><tr><td>первое поле</td><td>второе поле</td></tr></table>';
 
// закрываем тело страницы
$csv_output .='</body></html>';
// И наконец выгрузка в EXCEL - что в скрипте как обычный вывод
echo $csv_output;
/*
// браузер выдаст окно на запрос загрузки и сохранения файла
// скрипт готов, пользуйтесь на здоровье !
// при перепечатке оставляйте ссылку на сайт zapishi.net :)
// Регистрируйтесь и публикуйте свои материалы на сайте - поможем друг
другу получить больше новых знаний! :)
*/
?>


[0.007222]