PHPExcel как сохранить файл xlsx через браузер?

213
12 мая 2019, 04:10

Ребята, подскажите, пожалуйста.

Работаю в PHPExcel и никак не могу сделать сохранение файла в браузере. Т.е. я обрабатываю файл, в php у меня есть

 <a href="Load.php" class="button24">Сформировать отчет</a>

А вот файл load.php (Взял из примера PHPExcel)

<?php 
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="simple.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
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');
exit;

Файл называется simple.xlsx, тот который надо скачать через браузер. Он сформирован нормально и т.п. При попытке запустить - выводит иероглифы типа

PK�zM!��d��    [Content_Types].xml͖_O�0���K_�V@E4D�D���c[����޻jL����5�z���I;o��qQC��D���b!�]�i$L��3����2n���oT�:Z �h����[��4�ი��]��yN�,ە�>�>�j -' V�)�#��EF^6��n���8q"K��H��>_ׄ����eƏ�<⇄�Ud�v�� T�PK�zMY��%$xl/_rels/workbook.xml.rels��Kn�0�}Oa;���*&��R�-=��C����mԆH���ʚA��Ӱ���9��������RU�l8�O�c��D�$r���!��?c/��c�n4ąHá�v|�Ԕ-�DjD��JºR7t�I4H�8N��g@~�I�}��b�?٪��U�6��7FPc���I!t��ù�\���%�[w/��s���EW� �Ջ���71o�0�%1J�L�h/���7���lc& �Y�0������l|

Подскажите, пожалуйста, как вообще сохранять файл через браузер в PHPExcel? Если есть такая возможность- ещё подскажите, как может можно его и сразу на печать сделать по другой кнопке?

Answer 1

Вариант 1. Попробуйте сохранить сначала на сервере. Возможно файл "бьётся" на моменте скачивания

Вот часть кода из старого проекта, где все работает.

$objWriter = PHPExcel_IOFactory::createWriter($pExcel, 'Excel2007');
$objWriter->save('files/'.$_SESSION['session_username'] . date('His') .'simple.xlsx');

Вариант 2. Перед сохранением вызовите ob_end_clean()

Вариант 3. Проблема в кодировке. Сохраните файл в UTF-8 with BOM либо просто UTF-8

READ ALSO
Достать самое большое значение из JSON php

Достать самое большое значение из JSON php

Всем привет, вот ВК присылает JSON вроде такого:

242
csv +php или несите огнетушитель [закрыт]

csv +php или несите огнетушитель [закрыт]

Ребят кидаю данные в csv файл

188
подмена заголовков

подмена заголовков

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

184
Оптимизация php кода рассылки

Оптимизация php кода рассылки

Всем привет, еще не сильна в PHP, вот я сделала вот такой простенький скрипт для рассылки по своей группе ВК:

187