Как заставить файл .xlsx в PHP без его повреждения? - PullRequest
0 голосов
/ 26 апреля 2019

Ни один из уже существующих вопросов не помог мне. Я пытаюсь принудительно загрузить файл Excel с типом файла .xlsx. Он отлично работает в коде загрузки, подобном следующему:

echo "<a href='" . $dateiname . "'>Datei herunterladen</a>";

Но всякий раз, когда я пытаюсь сделать принудительную загрузку, это не работает. Я пробовал разные заголовки из разных вопросов на stackoverflow, последние два:

header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $dateiname . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Pragma: no-cache');
header('Content-Length: ' . filesize($dateiname));
$objWriter->save('php://output');

и

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Transfer-Encoding: binary ");
header('Content-Disposition: attachment; filename='.basename($dateiname));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($dateiname));
$objWriter->save('php://output');

Я пробовал оба в том же файле, где я создаю файл, но также и в отдельном файле, но в любом случае я всегда получаю ошибку:

Excel не может открыть файл (имя файла), так как формат файла или расширение файла недопустимы. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла.

Сам файл на моем сервере выглядит отлично.

1 Ответ

1 голос
/ 26 апреля 2019

Я обнаружил, как использовал PHPExcel для принудительной загрузки файла xls.

header("Content-Disposition: attachment; filename={$fileName}.{$fileFormat}");
header("Content-Type: application/vnd.ms-excel;");
header("Cache-Control: max-age=0");

$objWriter->save('php://output');

Надеюсь, это поможет.

...