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');

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

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

  1. CHERT 11 сентября 2024, 13:15 # 0
    PIDARI
    1. CHERT 11 сентября 2024, 13:15 # 0
      CTOB VI ZDOHLI!!!
      *Комментарий будет опубликован после проверки модератором

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

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

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

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

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

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

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

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

      Как поменять язык в 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 - простой пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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