#phpexcel #php
С помощью PHPExcel сохраняю файл в формате xlsx. Сохраняется нормально, а вот когда хочешь открыть Excel, выдает ошибку: В книге "Отчет по резервам.xlsx" обнаружено содержимое, котрое не удалось прочитать. Попробовать восстановить содержимое книги? Если вы доверяете источнику этой книги, нажмите кнопку "Да". Нажимаем Да - выводится сообщение: Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены. Генерируется XML с отчетом об ошибке:Настройки PHPExcel: setPreCalculateFormulas(false); /*Сохраняем документ*/ header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header('Content-Disposition: attachment;filename=' . $nameXLS . '.xlsx'); Используется office 2010. После всех сообщений отчет открывается, и всё с ним нормально, как и должно быть. Подскажите, как избавится от этих сообщений об ошибках? error048360_01.xml Обнаружены ошибки в файле "C:\Users\xxx\Downloads\Отчет по временным резервам с 01.01.2015 (6).xlsx" Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.
Ответы
Ответ 1
В общем, проблема решилась довольно-таки просто: Оказалось, что нужно в коде указывать следующее сочетание: $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); либо $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); У меня же было так: $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.ms-excel'); Что есть неправильно.Ответ 2
Скорее всего, имеет смысл порезать css перед генерацией excel. И вообще в принципе тем же самым пару дней назад занимался. Скиньте архив с исходниками и не забудьте в исходнике указать UTF-8(без BOM). гайдОтвет 3
У меня была та же проблема, и помог этот код. После него ошибки не было. mb_internal_encoding('latin1');Ответ 4
мучился с той же проблемой помог модуль импорта экспорта opencart https://www.opencart.com/index.php?route=extension/extension/info&extension_id=17 методом втыка подобрал решение в конце надо добавить exit; $objWriter = PHPExcel_IOFactory::createWriter($phpexcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="products.xlsx"'); header('Cache-Control: max-age=0'); $objWriter->setPreCalculateFormulas(false); $objWriter->save('php://output'); //без этой строки при открытии файла xlsx ошибка!!!!!! exit; причем с xls такой проблемы нет может кто прокомментирует потому что мозгов не хватает
Комментариев нет:
Отправить комментарий