Пакет Laravel Excel недавно выпустил версию 3.0, которая имеет новые функции, которые могут помочь упростить расширенные требования и очень удобна в использовании. Давайте рассмотрим некоторые скрытые функции, которые могут быть неизвестны, которые делают Laravel Excel лучшим выбором для расширения Excel.
1. Импорт данных из HTML или блейда
Предположим, у вас уже есть HTML-таблица
Код шаблона — ресурсы/просмотры/клиенты/таблица.лезвие. php:
First name | Last name | Created at | Updated at | ||
---|---|---|---|---|---|
{{ $customer->id }} | {{ $customer->first_name }} | {{ $customer->last_name }} | {{ $customer->email }} | {{ $customer->created_at }} | {{ $customer->updated_at }} |
Вы можете использовать его для многократного импорта этой формы в Excel.
Шаг 1. Создайте класс экспорта
php artisan make:export CustomersFromView --model=Customer
Шаг 2. Используйте Formview для работы
namespace App\Exports; use App\Customer; use Illuminate\Contracts\View\View; use Maatwebsite\Excel\Concerns\FromView; class CustomersExportView implements FromView { public function view(): View { return view('customers.table', [ 'customers' => Customer::orderBy('id', 'desc')->take(100)->get() ]); } }
Вот импортированный файл Excel:
Примечание: Здесь можно экспортировать только таблицы HTML, без каких-либо тегов, таких как html, body, div и т.д.
- *
2. Экспорт в PDF, HTML или другие форматы
Хотя имя пакета-Laravel Excel, он предоставляет множество форматов экспорта и очень прост в использовании, если вы добавите в класс еще один параметр:
return Excel::download(new CustomersExport(), 'customers.xlsx', 'Html');
Таким образом, например, экспортируется HTML, как показано на следующем рисунке:
Существует не так уж много стилей. Вот исходный код:
Мало того, он также может быть экспортирован в PDF, и даже вы можете выбрать из них три библиотеки. Способ их использования тот же самый. Вам просто нужно указать формат для последнего параметра. Вот несколько примеров. Примеры документов:
Примечание. Вы должны установить указанный пакет PDF через composer, например:
composer require dompdf/dompdf
Полученный PDF-файл выглядит следующим образом:
- *
3. Форматирование ячеек по требованию
У Laravel Excel есть мощный “отец” — электронная таблица Php. Таким образом, он имеет свои различные базовые функции, включая различные формы форматирования ячеек.
Вот пример того, как использовать его в классе экспорта Laravel, например, экспорт приложений/Экспорт/Экспорт клиентов Styling.php:
Вот пример того, как использовать его в классе экспорта Laravel, например, экспорт приложений/Экспорт/Экспорт клиентов Styling.php:
use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Events\AfterSheet;
Шаг 2. Используйте интерфейс WithEvents в разделе “Реализация”.
class CustomersExportStyling implements FromCollection, WithEvents { // ...
Шаг 3. Создайте метод registerEvents () с событием после листа.
/** * @return array */ public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { //... Here you can format it as you like. }, ]; }
Вот пример:
/** * @return array */ public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { // All headers - Set font to 14 $cellRange = 'A1:W1'; $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14); // Applying Style Arrays to B2:G8 Range Cells $styleArray = [ 'borders' => [ 'outline' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK, 'color' => ['argb' => 'FFFF0000'], ] ] ]; $event->sheet->getDelegate()->getStyle('B2:G8')->applyFromArray($styleArray); // Set the first line height to 20 $event->sheet->getDelegate()->getRowDimension(1)->setRowHeight(20); // Set up automatic line breaking for text in A1:D4 range $event->sheet->getDelegate()->getStyle('A1:D4') ->getAlignment()->setWrapText(true); }, ]; }
Результаты этих “случайных” примеров таковы:
Вы можете найти все вышеперечисленные и другие примеры на странице рецептов документов с электронными таблицами Php.
- *
4. Скрытые Атрибуты Модели
Предположим, мы его создали. Laravel 5.7
По умолчанию пользователи
Таблица:
Теперь давайте попробуем использовать простые. Из Коллекции
Для экспорта данных таблицы пользователей:
class UsersExport implements FromCollection { public function collection() { return User::all(); } }
В экспортированном Excel вы можете видеть только следующие поля, но не пароль
и remember_token
:
Это происходит потому, что Пользователь
Свойства скрытых полей определяются в модели:
class User extends Authenticatable { // ... /** * This array is used to define the fields that need to be hidden. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
Таким образом, по умолчанию эти поля скрыты. Если вы хотите экспортировать данные, когда некоторые поля не экспортируются, вы можете определить скрытые свойства непосредственно в модели. $скрыто
。
- *
5. формула
По какой-то причине в официальной документации пакета Laravel Excel не упоминаются формулы, но это важная функция Excel!
К счастью, мы можем записывать формулы непосредственно в классы, которые экспортируют данные, и нам нужно их настроить. ячейка
Значение, например: =A2+1 или СУММА(A1:A10)
。
Один из способов-это реализовать его. С Отображением
Интерфейс:
use App\Customer; use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\WithMapping; class CustomersExportFormulas implements FromCollection, WithMapping { public function collection() { return Customer::all(); } /** * @var Customer $customer * @return array */ public function map($customer): array { return [ $customer->id, '=A2+1', $customer->first_name, $customer->last_name, $customer->email, ]; } }
Это пять малоизвестных функций Laravel Excel.
От: https://learnku.com/ларавель/т…
Дополнительные статьи: https://learnku.com/laravel/c…