#php #phpspreadsheet
#php #phpspreadsheet
Вопрос:
я хочу использовать библиотеку PhpSpreadsheet в моем проекте для экспорта данных в Excel экспортированный файл, но когда я пытаюсь открыть файл, отображается эта ошибка: excel не может открыть файл, потому что формат файла или расширение файла недопустимы. убедитесь, что файл не был поврежден
-
Примечание: я использую MVC в своем проекте, поэтому код в контроллере выглядит следующим образом:
protected function Excel($view, $variables = []) { require_once PATH_LIBRARY_FOLDER.'PhpSpreadsheetvendorautoload.php'; ob_start(); // Note: make new Spreadsheet object $spreadsheet = new Spreadsheet(); // Note: get current active sheet (frist sheet) $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', 'Hello World !'); extract($variables); include($this->viewPath.$view.'.php'); // Note: set the header to define it is excel file header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); // Note: set the header to define excel file name header("Content-Disposition: attachment;filename="filename.xlsx""); header("Cache-Control: max-age=0"); // Note: create IOFactory object $writer = IOFactory::createWriter($spreadsheet, 'xlsx'); ob_get_clean(); $writer->save('php:://output'); exit(); }
когда я открываю файл в виде текста, я обнаружил эту ошибку:
Неустранимая ошибка: не удалось открыть PHPOfficePhpSpreadsheetWriter Exception: Не удалось открыть php:://вывод для записи. в C:xampphtdocsGL_AppLibraryPhpSpreadsheetvendorphpofficephpspreadsheetsrcPhpSpreadsheetWriterXlsx.php:218
Ответ №1:
У меня та же проблема, мое решение здесь. Просто поместите код ниже :
ob_end_clean();
Код:
ob_end_clean();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'. $filename );
header('Cache-Control: max-age=0');
$writer->save('php://output'); // download file
Ответ №2:
Измените эту строку кода
$writer->save('php:://output');
Для
$writer->save('php://output');
Он должен работать. Кроме того, как вы передаете данные на лист Excel? Возможно, у вас повреждены данные.
Пожалуйста, вставьте это в свой код после autoload.php
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;
Комментарии:
1. я изменил его, но все еще не могу открыть файл и та же ошибка @Budimir Skrtic
2. Хорошо, что это делает extract($variables); include($this-> viewPath.$view.’.php’);? Вы получаете какие-либо выходные данные? Взгляните на мой обновленный пост и добавьте эти две строки кода.
3. вышеуказанные 2 строки уже добавлены в верхней части страницы в разделе пространство имен: ядро пространства имен контроллер; используйте Core App; используйте PHPOffice PhpSpreadsheet Электронная таблица; используйте PHPOfficePhpSpreadsheetWriter Xlsx;
4. большое спасибо, я снимаю наличные и после редактирования моего кода в: $ writer-> save(‘php:// output’); теперь это работает @Budimir Skrtic