Ламерский вопрос про headers()

bobo

Новичок
Привет.
При работе с классом PhpExcel, при формировании xls документа используется следующая конструкция:

PHP:
		//создаем объект класса-писателя
		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 ..." и далее по-тексту :)

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

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

PHP:
		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", кидание помидорами и просто флуд приветствуются :)
 

Dovg

Продвинутый новичок
Не надо выполнять скрипт " в середине страницы". Вместо этого в середине страницы надо сделать html ссылку на "скрипт".
 

radioheaded

PHP нуб
meta не всегда аналогичны хидерам, к сожалению. Вернитесь к варианту с хидерами, только посылайте их до любого вывода. У меня даже бабушка знает, что такое «Cannot modify header information», стыдно, товарищ.
 
Сверху