Пакет 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…