2010-04-08 2 views
8

В то время как googling я нашел два разных набора заголовков, которые необходимо установить при выводе excel, сгенерированных в другом формате.PHPExcel задает конкретные заголовки для формата файла

, например.

Для типа "Excel5" заголовки:

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download");; 
header("Content-Disposition: attachment;filename=$filename"); 
header("Content-Transfer-Encoding: binary "); 

Для типа "Excel2007" заголовки:

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="myfile.xlsx"'); 
header('Cache-Control: max-age=0'); 

Мой вопрос: существует ли нужно настроить различные заголовки каждый тип файла, как и другие типы файлов также CSV, HTML и PDF?

ответ

12
header("Pragma: public"); 

Нет - это просто неправильно - хотя многие люди думают, что что-то не делать с кэшированием

header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

ничего общего с Excel - это просто контролировать кэширование

header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download");; 

Нет - должен быть только быть одним заголовком контента. Для файла MS Excel, использующего OLE, тип mimetype должен быть application/vnd.ms-excel

Только второй заголовок выше является допустимым типом mime.

header("Content-Disposition: attachment;filename=$filename"); 
header("Content-Transfer-Encoding: binary "); 

Второй заголовок является избыточным, первый указывает имя файла для загрузки.

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ');

Только для .xlsx-файла (то есть сохраненного в XML). В противном случае вы должны использовать application/vnd.ms-excel. Действительно, последний должен быть обратно совместимым.

Мой вопрос: существует ли нужно настроить различные заголовки для каждого типа файла

Да - Content-Type заголовка является тип файла. Но только этот заголовок должен измениться.

C.

Смежные вопросы