PHPexcel не может сохранить файл

У меня есть файл, где я хочу использовать стандартный пример. Как и здесь, но я добавил php://output вместо str_replace('.php', '.xlsx', __FILE__) потому что я хочу, чтобы файл загружался пользователем. Итак, у меня есть форма:

$res.="<form method="POST" action="" .$this-="">self()."">";
$res.="";
$res.="<button type="submit" id="export">Экспорт</button>";
$res.="</form>";

И если post['excelAddress'] isset, я попробую стандартный пример:

$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("Administrator");
$objPHPExcel->getProperties()->setLastModifiedBy("Administrator");
$objPHPExcel->getProperties()->setTitle("Показания клиентов по адресу:".$_POST['excelAddress']);
$objPHPExcel->getProperties()->setSubject("Показания клиентов по адресу:".$_POST['excelAddress']);
$objPHPExcel->getProperties()->setDescription("Показания клиентов по адресу:".$_POST['excelAddress']);
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('php://output');

Также в верхней части моей страницы у меня есть:

/** PHPExcel */
include './lib/PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
include './lib/PHPExcel/Writer/Excel2007.php';

Также у меня есть:

ini_set("display_errors", "On");
error_reporting(E_ALL ^ E_NOTICE);

Нужно ли мне:

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

Или это просто не писать. /lib./... где у меня есть все библиотеки? Когда я пробую свой пример, я просто имею:

KL�,EG�D�X�[Content_Types].xml��MN�0���"�%nY ��vAa �(0����ؖg�w{&i�@�nbE�{��y��d۸l m������X�(���)���F���;@1_������c)j�x/%��E��y� �QĿi!��K�y3�J<���Z1�0?Y�L%zV c��Ib7�����a/l٥P1:�q�r��j��j0A����u�""���(� ���W�M��)Tj�({ܲ�>�O��,X٭���>B��~׭���Ӥ6�J=�oBZ����t��X4���Cg�,���QgmrL�ٯc�e���t�� Z�?����hPv��±��u�j���R�������}�Cv��PKL�,E�78�K_rels/.rels���j�0��{ �{���1F�^ʠ�2��l��$���-}�y����Î��O��v�y�;�؋Ӱ.JP���޵^������Yű�3G�Ww�g)����>�qQC��D����b!�]�i$L��3����2n���oT�:Z �h�����[��4�ი��]��yN�,ە�>�>�j -' V�)�#��EF^6��n���8q"K��H��>_ׄ����eƏ�<⇄�Ud�v�� T�PKL�,E�$�V��xl/_rels/workbook.xml.rels���j�0D�� ��ZvZJ)�s)�\[����LlIh7m��UH��Ĭؙ�H���8�OL���*J�M���|4��g��[=�

Какая у меня ошибка?

2 ответа

Наверное, вы забыли добавить header.

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment;filename={$filename}");
header('Cache-Control: max-age=0');
$objWriter->save('php://output');

Кроме того, заголовки предназначены для:

.xls: application/vnd.ms-excel

.xlsx: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet


Вам нужно отправить заголовки ответов HTTP, чтобы браузер знал, как обрабатывать данные, которые ему отправляются. Взгляните на /Examples/01simple-download-xlsx.php

licensed under cc by-sa 3.0 with attribution.