Задать вопрос
@borschtWITHgarlic

Почему возникает ошибка при открытии файла созданного через PhpSpreadsheet?

Мой код по созданию excel файла:
header('Content-Type: application/json');

$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

//формирую массив с данными

$sheet->fromArray($arrayData, NULL, 'A1');

$writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$xlsData = ob_get_contents();
ob_end_clean();

echo json_encode('data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,'.base64_encode($xlsData));


Скачиваю на комп., файл не открывается и выдает ошибку:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
error051840_01.xmlОбнаружены ошибки в файле "C:\Users\apisi\Downloads\Report (6).xlsx"Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.

Файл можно открыть только если в свойствах поставить галку:
5f32cc1819b6e754559123.png

Покопалась в интернете, в основном в заголовки упирается все или в конце скрипта поставить die;
Ничего из этого не помогает.
  • Вопрос задан
  • 1044 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
@Configural
У меня тоже такое было, вылезло после обновления Phpspreadsheet, причем не во всех файлах, а только там где были поля со списками допустимых значений (они эти значения тянулись со второго листа). Проект на Laravel 5.4. Решилось даунгрейдом пакета до версии до 1.14 (в которой гарантированно работало). В composer.json принудительно задал версию (без префиксов типа ^ или ~)

"require": {
...
"phpoffice/phpspreadsheet": "1.14",
...
},

и запустил composer update.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы