[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: headers()
bobo
Привет.
При работе с классом PhpExcel, при формировании xls документа используется следующая конструкция:


//создаем объект класса-писателя
include("PhpExcel/Classes/PHPExcel/Writer/Excel5.php");
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

//выводим заголовки
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=".$this -> smInfo['smNum'].".xls");
header('Cache-Control: max-age=0');

//выводим в браузер таблицу с бланком
$objWriter->save('php://output');


Возникла проблема, т.к. скрипт выполняется, грубо говоря, в середине страницы, следовательно блок headers() выдает ошибку "Cannot modify header information ..." и далее по-тексту :)

Попытался поизвращаться и заменил раздел


header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=".$this -> smInfo['smNum'].".xls");
header('Cache-Control: max-age=0');


на


echo "<meta http-equiv='Content-Type' CONTENT='application/vnd.ms-excel'>";
echo "<meta http-equiv='Content-Disposition' CONTENT='attachment; filename=".$this -> smInfo['smNum'].".xls'>";
echo "<meta http-equiv='Cache-Control' CONTENT='max-age=0'>";


Ошибка, есессно, пропала, но и стандартный диалог загрузки файла (где спрашивают "Открыть", "Сохранить" и т.п.) не появляется, а на страницу выводятся кракозяблины.

Поправьте плз, что не так делаю.

Заранее благодарю!

з.ы. Возгласы "нутииламир!!!!111", кидание помидорами и просто флуд приветствуются :)



Спустя 1 минута, 54 секунды (29.09.2011 - 16:53) inpost написал(а):
Заголовок в начало страницы пропиши.

Спустя 21 минута, 12 секунд (29.09.2011 - 17:14) bobo написал(а):
Было бы все так просто, тему бы не создавал. Не получится функцию на самый верх вынести, как решить задачу другими путями ?

Спустя 39 секунд (29.09.2011 - 17:15) inpost написал(а):
что значит ЗАГОЛОВОК нельзя вверх? Заголовок на то и заголовок, что он должен первым передаваться, а потом всё остальное.

Спустя 26 минут, 35 секунд (29.09.2011 - 17:42) bobo написал(а):
Так в функции перед заголовками нечего и не передается, сама функция вызывается в <body></body>, в самый верх html разметки эту функцию вынести не получится sad.gif
Вариант с <meta> чем плох ?

Спустя 16 минут, 47 секунд (29.09.2011 - 17:58) inpost написал(а):
"Cannot modify header information " - вывод текста ДО заголовков, или UTF with BOM, который надо отключить.
<body><head> - это содержание страницы, чтобы браузер понял, что <body> - это разметка или обычный текст - надо передать заголовки, поэтому заголовки передаются в самом начале.

Спустя 39 минут, 2 секунды (29.09.2011 - 18:37) Zerstoren написал(а):
ob_start, ob_get_contents

вам в зубы и php.net в браузер
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.