Я использую Laravel excel library "maatwebsite / excel"
Вот мой код
\Excel::create('Users Report' . $time, function ($excel) use ($arrUsers) { $excel->sheet('Users', function ($sheet) use ($arrUsers) { // Set all margins $sheet->fromArray($arrUsers, null, 'A1', true); $sheet->setSize('A1', 25, 18); $sheet->setSize('B1', 25, 18); $sheet->setSize('C1', 25, 18); $sheet->row(1, array( 'Id', 'Name', 'Username', 'Address', 'Email' )); // Freeze first row $sheet->freezeFirstRow(); $sheet->cell('A1:F1', function ($cell) { }); }); })->store('xlsx')->download('xlsx');
Файл загружен успешно, но когда я пытаюсь открыть, отображается как показано ниже.
Я ссылаюсь на следующие сайты и стараюсь в соответствии с его решениями, но не получил никакого решения. https://github.com/Maatwebsite/Laravel-Excel/issues/202
Пожалуйста, помогите мне.
Благодарю.
Проблема в выходном буфере, решаемая
ob_end_clean(); ob_start(); //At the very top of your program (first line) \Excel::create('Users Report' . $time, function ($excel) use ($arrUsers) { $excel->sheet('Users', function ($sheet) use ($arrUsers) { // Set all margins $sheet->fromArray($arrUsers, null, 'A1', true); $sheet->setSize('A1', 25, 18); $sheet->setSize('B1', 25, 18); $sheet->setSize('C1', 25, 18); $sheet->row(1, array( 'Id', 'Name', 'Username', 'Address', 'Email' )); // Freeze first row $sheet->freezeFirstRow(); $sheet->cell('A1:F1', function ($cell) { }); }); })->store('xlsx')->download('xlsx'); ob_flush();
Это также происходит, когда ваш код отправляет на экран предупреждения или ошибки, попробуйте буферизацию вывода , чтобы проверить, посылает ли ваша программа какой-либо символ на вывод:
<?php ob_start(); //At the very top of your program (first line) \Excel::create('Users Report' . $time, function ($excel) use ($arrUsers) { $excel->sheet('Users', function ($sheet) use ($arrUsers) { // Set all margins $sheet->fromArray($arrUsers, null, 'A1', true); $sheet->setSize('A1', 25, 18); $sheet->setSize('B1', 25, 18); $sheet->setSize('C1', 25, 18); $sheet->row(1, array( 'Id', 'Name', 'Username', 'Address', 'Email' )); // Freeze first row $sheet->freezeFirstRow(); $sheet->cell('A1:F1', function ($cell) { }); }); })->store('xlsx')->download('xlsx'); //Catch any character sended to the output at this point $out = ob_get_contents(); //Routing the output to the error_log error_log($out); //Cleaning the ouput buffer ob_end_clean();
Надеюсь, это сработает для вас