Laravel Excel - Базовый экспорт

Установка 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');

... Материал будет дополняться.

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Пример перевода с помощью Yandex Translate API

Загрузка изображения в Laravel

Русификация Laravel

Универсальная форма обратной связи — feedBackForm

Добавить поле к существующей таблице Laravel

Как контролировать кэш CSS и скриптов

Как поменять версию PHP, используемую в командной строке на Windows

Как поменять язык в Faker

Транслитерация URL в Laravel. Примеры str_slug()

Простое логирование

Разработка бота Telegram с помощью Botman на локальном компьютере

Курсы валют с cbr.ru на PHP

Разные фишки, заготовки

Получить вложенный массив из плоского

Валидация данных в Laravel form request

Laravel Excel - Базовый экспорт

Добавить в botman editMessageText для Telegram

Namespace на примерах - Как понять пространства имен в PHP

Заготовки для автоматического заполнения товарами магазина 1.5.5.1.2

Как сделать middleware в Laravel 6 - простой пример

Как обработать POST данные в PHP

Примеры работы с API

Создать ссылку на storage из внешнего каталога для Laravel

Как русифицировать или поменять шаблон уведомления о сбросе пароля в Laravel

Установить Laravel в отдельную папку (site.ru/laravel/)

Laravel: Отношения моделей многие ко многим - belongsToMany

Загрузить файл для постобработки

Получить время выполнения PHP скрипта. Решение в 3 строки кода

Laravel: Отношения моделей один ко многим - hasMany, belongsTo

Валидация номера кредитной карты на PHP (Laravel)

Получить курсы валют с cbr.ru на PHP с кэшированием результатов

Связать папку storage с папкой public в Laravel

Откуда в Laravel Jetstream (inertia) prop auth.user?

Создание form request в Laravel: руководство для начинающих

Экспорт маршрутов из Laravel в JSON файл

Фиксированная сортировка массива на основе хэша

Постраничная навигация на Bootstrap в Laravel 8

Вывести список всех файлов на сервере (и размер файла)

Обработка ошибок в Laravel form request

Blade - расширить @section с использованием директивы @parent

Добавить данные об авторизации при каждом запросе к API в Laravel

Работа с файлами в Laravel Form Request

Работа с вложенными объектами и коллекциями в Laravel form request

Стандартные свойства модели в Laravel

Laravel: Отношения моделей один к одному - hasOne, belongsTo

Laravel: Отношение через таблицу-посредника - hasOneThrough()

Авторизацией и аутентификация в Laravel form request

Настройка команды CRON на хостинге nic.ru для активации Laravel schedule

Laravel form request для создания API-запросов

Laravel: Отношение через таблицу-посредника - hasManyThrough()

HTTP-запросы в Laravel form request - работа с различными типами запросов

Создание класса модели в Laravel

Создание уникального индекса в миграции Laravel

Установка Laravel и создание нового проекта

Как создать модель в Laravel

Создание таблицы в базе данных (миграции) для модели в Laravel

Базовые методы CRUD контроллера для модели в Laravel

Наш сайт использует куки, нажмите «ОК» если вы не против
OK