Рубрики
Uncategorized

Пять скрытых функций Laravel Excel

Автор оригинала: David Wong.

Пакет Laravel Excel недавно выпустил версию 3.0, которая имеет новые функции, которые могут помочь упростить расширенные требования и очень удобна в использовании. Давайте рассмотрим некоторые скрытые функции, которые могут быть неизвестны, которые делают Laravel Excel лучшим выбором для расширения Excel.

1. Импорт данных из HTML или блейда

Предположим, у вас уже есть HTML-таблица

Код шаблона — ресурсы/просмотры/клиенты/таблица.лезвие. php:


    @foreach ($customers as $customer)
    
    @endforeach
    
First name Last name Email 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…