#php #laravel
#php #laravel
Вопрос:
Я хочу загрузить файл Excel из массива с помощью Laravel
Библиотека:
use MaatwebsiteExcelFacadesExcel;
Это мой код:
$ex = [
['one', 'name'],
['two', 'family']
];
return Excel::download(new TestExport([$ex]), 'test.xlsx');
Мой класс:
class TestExport
{
protected $arrays;
public function __construct(array $arrays)
{
$this->arrays = $arrays;
}
public function array(): array
{
return $this->arrays;
}
}
Но этот код загружает пустой xlsx
файл
Комментарии:
1. какую библиотеку вы используете?
2. @aimme я отредактировал свой вопрос. Я использую
MaatwebsiteExcelFacadesExcel;
Ответ №1:
Я нашел ответ:
class TestExport implements FromCollection, WithHeadings
{
protected $data;
/**
* Write code on Method
*
* @return response()
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Write code on Method
*
* @return response()
*/
public function collection()
{
return collect($this->data);
}
/**
* Write code on Method
*
* @return response()
*/
public function headings() :array
{
return [
'ID',
'Name',
'Email',
];
}
}
Комментарии:
1. поэтому отметьте это как правильный ответ. добро пожаловать в stackoverflow 🙂
Ответ №2:
Я ценю ваше исследование, чтобы найти ответ самостоятельно. Соглашаясь с вашим собственным ответом, я также хочу подчеркнуть, что библиотека Excel, которую вы используете, принимает коллекцию Laravel, а не массив. Итак, вам нужно преобразовать ваш массив в коллекцию, используя вспомогательную функцию ‘collect’, как показано ниже:
$myCollection = collect($this->ar);
Затем экспортируйте его с помощью фасада Excel:
return Excel::download(new TestExport($myCollection), 'test.xlsx');