Установка Laravel Excel 3.1
Системные требования:
- PHP:
^7.0
- Laravel:
^5.5
- PhpSpreadsheet:
^1.6
- PHP extension
php_zip
enabled - PHP extension
php_xml
enabled - PHP extension
php_gd2
enabled
Установка через 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');
... Материал будет дополняться.
Комментарии (2)
Не писать ответ