Установка Laravel Excel 3.1
Системные требования:
- PHP:
^7.0 - Laravel:
^5.5 - PhpSpreadsheet:
^1.6 - PHP extension
php_zipenabled - PHP extension
php_xmlenabled - PHP extension
php_gd2enabled
Установка через composer. Команда установит пакет, а также PhpSpreadsheet
composer require maatwebsite/excel
Maatwebsite\Excel\ExcelServiceProvider автоматически обнаруживается (auto-discovered) и регистрируется по умолчанию
Если вы хотите зарегистрировать его самостоятельно, добавьте ServiceProvider в config/app.php
В документации описано как это сделать
Базовый экспорт за 5 минут
Чтобы создайть класс экспорта в app/Exports выполните команду artisan
Передавая параметр --model=User вы указываете, что экспорт нужно подготовить для модели User
php artisan make:export ExportBasic --model=User
Файл будут расположен так:
. ├── app │ ├── Exports │ │ ├── ExportBasic.php │ └── composer.json
А содержание файла ExportBasic.php:
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class ExportBasic implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return User::all();
}
}
Теперь в контроллере можно вызвать созданный экспорт:
namespace App\Http\Controllers;
use App\Exports\ExportBasic;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
public function exportBasic()
{
return Excel::download(new ExportBasic, 'users-'.__FUNCTION__.'.xlsx');
}
}
Также не забудем указать роут для экспорта:
Route::get('exportBasic', 'UsersController@exportBasic');
Дополнительные настройки экспорта
Использование шаблонизатора Blade
Вы можете определить содержание экспортируемой таблицы в шаблоне. Для этого вам понадобится создать файл resources/view/exports/users.blade.php:
<table>
<thead>
<tr>
<th>ID</th>
<th>Имя</th>
<th>Email</th>
</tr>
</thead>
<tbody>
@foreach($items as $item)
<tr>
<td>{{$item->id}}</td>
<td>{{$item->name}}</td>
<td>{{$item->email}}</td>
</tr>
@endforeach
</tbody>
</table>
Файл экспорта app/Exports/ExportBladeBasic.php
namespace App\Exports;
use App\User;
// Для вывода с использованием Blade
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
class ExportBladeBasic implements FromView
{
// Экспорт с использованием шаблонизатора Blade
public function view(): View
{
$items = User::all();
return view('exports.users', ['items' => $items]);
}
}
Метод в контроллере
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\ExportBladeBasic;
//..
public function exportBladeBasic()
{
return Excel::download(new ExportBladeBasic, 'users-'.__FUNCTION__.'.xlsx');
}
Роут
Route::get('exportBladeBasic', 'UsersController@exportBladeBasic');
... Материал будет дополняться.
Комментарии (0)
Не писать ответ