Заголовок PHP Excel

header("Content-Type:   application/vnd.ms-excel; charset=utf-8");
header("Content-type:   application/x-msexcel; charset=utf-8");
header("Content-Disposition: attachment; filename=abc.xsl"); 
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
echo "Some Text"

Вот код для записи и загрузки файла xsl с помощью php,
моя проблема в том, когда я открываю Excel файл. MS-Excel показывает предупреждение перед открытием файла.

Файл, который вы пытаетесь открыть, находится в другом формате, чем указано в расширении файла... Blah blah

Что делать с кодом PHP, чтобы удалить это предупреждение? Содержание написано правильно.

Я знаю, это потому, что контент, записанный в файле, является содержимым файла txt, а расширение файла неверно, т.е. xls. Решение?

Пожалуйста, не предлагайте использовать какую-либо библиотеку.

Ответ 1

Вы предоставляете несколько заголовков Content-Type. application/vnd.ms-excel достаточно.

И есть пара синтаксических ошибок. К завершению оператора с помощью ; в инструкции echo и неправильном расширении имени файла.

header("Content-Type:   application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=abc.xls");  //File name extension was wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
echo "Some Text"; //no ending ; here

Ответ 2

Попробуйте это

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

Ответ 3

Просто попробуйте добавить exit; в конец вашего PHP скрипт.