Я не использовал этот пакет, но из сигнатуры метода видно, что второй аргумент ожидает string
, который будет именем файла для загрузки:
public function download($export, string $fileName, string $writerType = null, array $headers = [])
В вашем случае вы возвращаете callback
.
Обновление 1
Видя документы, я думаю, что вы пытаетесь использовать статический метод create
класса Excel
, но вместо этого вы используете (неправильно) загрузочный метод. Из документов :
Создание листа из массива
Массив
Чтобы создать новый файл из массива, используйте ->fromArray($source,
$nullValue, $startCell, $strictNullComparison, $headingGeneration)
внутри листа closure
.
Excel::create('Filename', function($excel) {
$excel->sheet('Sheetname', function($sheet) {
$sheet->fromArray(array(
array('data1', 'data2'),
array('data3', 'data4')
));
});
})->export('xls');
Итак, в вашем случае замените первое download](...)
на create(...)
:
public function excel_report()
{
$student_data = DB::table('student_details')->get()->toArray();
$student_array[] = array('Name', 'Address', 'Roll No', 'Class');
foreach ($student_data as $student)
{
$student_array[] = array(
'Student Name' => $student->st_name,
'Address' => $student->address,
'Roll No' => $student->roll_no,
'Class' => $student->st_class
);
}
Excel::create('Student_Data', function ($excel) use ($student_array) {
// ^^^^^^^
$excel->setTitle('Student Datas');
$excel->sheet('Student_Datass', function ($sheet) use ($student_array) {
$sheet->fromArray($student_array, null, 'A1', false, false);
});
})->export('xls');
// ^^^^^^^^^^^^^^
}
Обновление 2
Приведенный выше код работает для v2
, но, учитывая, что вы используете v3
, это не поможет. В текущей версии вы можете отформатировать ваш выходной файл с помощью комбинации Export
s и Sheet
классов. На самом деле, это более модульный подход для разделения и улучшения вашего кода. Проверьте этот раздел документов.