Как избежать ошибки "плохого формата" в Excel при сохранении таблицы - PullRequest
0 голосов
/ 13 декабря 2018

Использование сохранения PHPSpreadsheet в формате XLSX работает нормально, запустив код по умолчанию

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); 
$writer->save("filename.xlsx");

Но если я хочу, чтобы пользователь выбрал целевой каталог, используя

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="filename.xlsx"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadSheet, 'Xlsx');
$writer->save('php://output');

Файл сохраняет OKно Excel 2016 не хочет его открывать.Excel возвращает следующую ошибку Ошибка Excel

Я просмотрел всю документацию и сообщения, но не могу найти решение.

Спасибо!

Редактировать: Только вВ этом случае это решение не работает для меня.

Редактировать 2: Пример, предоставленный Simple Download Xlsx, работает отлично, но при копировании / вставке для моей электронной таблицы Chrome дает мне Resource interpreted as Document but transferred with MIME type application/octet-stream

Редактировать 3: Использовано ob_end_flush(); для очистки любого оставшегося заголовка в моем коде.Файл теперь сохраняет ОК, но нуждается в восстановлении при открытии в Excel.Почему?

Спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

Решение:

Ошибка из PhpSpreadsheet.

При использовании header("Content-Type: application/vnd.ms-excel");

, т. Е. В режиме совместимости с Excel, файл открывается ОК.

...