K

Tabulka

Exporty tabulky

Wire Table umí exportovat aktuální dotaz tabulky jako CSV, Excel nebo PDF. Exporty používají aktuální hledání, filtry, řazení a viditelné sloupce.

Na této stránce

Wire Table umí exportovat aktuální dotaz tabulky jako CSV, Excel nebo PDF. Exporty používají aktuální hledání, filtry, řazení a viditelné sloupce.

Základní tlačítka exportu

Přidejte tlačítka nebo položky menu, které volají exportTable() z Livewire komponenty používající WithTable.

<button type="button" wire:click="exportTable('csv')">
Export CSV
</button>
 
<button type="button" wire:click="exportTable('xlsx')">
Export Excel
</button>
 
<button type="button" wire:click="exportTable('pdf')">
Export PDF
</button>

Podporované hodnoty formátu:

Hodnota Typ souboru
csv CSV
xlsx Excel
pdf PDF

Konfigurace výchozích hodnot exportu

Použijte ExportAction v headerActions(), když chcete definovat konfiguraci exportu v definici tabulky.

use NyonCode\WireTable\Export\ExportAction;
use NyonCode\WireTable\Export\ExportFormat;
use NyonCode\WireTable\Export\TableExport;
 
public function table(Table $table): Table
{
return $table
->model(User::class)
->columns([
TextColumn::make('name')->label('Name')->searchable()->sortable(),
TextColumn::make('email')->label('Email')->searchable(),
TextColumn::make('role')->label('Role'),
])
->headerActions([
ExportAction::makeExport()
->formats([ExportFormat::Csv, ExportFormat::Excel])
->exportConfig(
TableExport::make()
->fileName('users')
->delimiter(';')
->withHeadings()
),
]);
}

Stahování stále probíhá přes exportTable('csv'), exportTable('xlsx') nebo exportTable('pdf'). První ExportAction na tabulce poskytuje výchozí nastavení exportu.

Exportované sloupce

Ve výchozím stavu exporty zahrnují sloupce tabulky viditelné aktuálnímu uživateli. Sloupce skryté uživatelem se přeskočí.

Pro export vlastní sady sloupců:

TableExport::make()
->columns([
TextColumn::make('name')->label('Name'),
TextColumn::make('email')->label('Email'),
]);

Popisky sloupců se použijí jako hlavičky, když jsou hlavičky zapnuté.

Exportovaný dotaz

exportTable() vychází z aktuálního filtrovaného a seřazeného dotazu tabulky, bez stránkování.

Pro přidání omezení jen pro export:

TableExport::make()
->fileName('active-users')
->modifyQueryUsing(fn ($query) => $query->where('active', true));

Pro export úplně samostatného dotazu použijte TableExport přímo:

return TableExport::make()
->fileName('inactive-users')
->query(User::query()->where('active', false))
->columns([
TextColumn::make('name'),
TextColumn::make('email'),
])
->download();

Exportované souhrny

Sloupce se souhrny v rozsahu query připojí své součty za datové řádky — stejné celkové součty, jaké patička zobrazuje pro celou filtrovanou sadu, v každém formátu (CSV, Excel, PDF). Buňky se vykreslí jako Label: hodnota ve sloupci, kam patří; sloupec s několika souhrny vyprodukuje několik řádků:

Number,Total
ORD-1,100
ORD-2,250
,"Grand total: 350 Kč"
,"Average: 175 Kč"

Souhrny v rozsahu page/selection popisují přechodný stav UI a nikdy se neexportují. Pro export holých dat bez součtů:

TableExport::make()
->withSummaries(false);

Rollup sloupce (->sums(), ->counts(), …) exportují své hodnoty per řádek i celkové součty. Při exportu vlastního dotazu s rollup sloupci musí dotaz obsahovat odpovídající withSum/withCount — stejný požadavek jako u samotné tabulky. Celkové součty podřádků a mezisoučty skupin jsou jen v patičce a do exportů se nezahrnují.

Volby CSV

TableExport::make()
->fileName('users')
->delimiter(';')
->enclosure('"')
->withHeadings();

Pro odstranění řádku hlaviček:

TableExport::make()
->withHeadings(false);

Excel export

Excel export používá formát xlsx.

<button type="button" wire:click="exportTable('xlsx')">
Export Excel
</button>

Nainstalujte OpenSpout, když vaše aplikace potřebuje skutečné XLSX soubory:

composer require openspout/openspout

Pokud OpenSpout není nainstalován, Wire spadne zpět na CSV výstup.

PDF export

PDF export používá formát pdf.

TableExport::make()
->fileName('users')
->orientation('landscape')
->paperSize('A4')
->pdfView('exports.users');

Nainstalujte Laravel DomPDF, když vaše aplikace potřebuje PDF soubory:

composer require barryvdh/laravel-dompdf

Pokud DomPDF není nainstalován, Wire spadne zpět na CSV výstup.

Data PDF pohledu

Při použití vlastního PDF pohledu ho navrhněte jako běžnou Blade export šablonu. Exportér předá pohledu headings, rows, columns a summaryRows (předformátované řádky součtů, prázdné když jsou souhrny vypnuté).

{{-- resources/views/exports/users.blade.php --}}
<table>
@if (! empty($headings))
<thead>
<tr>
@foreach ($headings as $heading)
<th>{{ $heading }}</th>
@endforeach
</tr>
</thead>
@endif
 
<tbody>
@foreach ($rows as $row)
<tr>
@foreach ($row as $value)
<td>{{ $value }}</td>
@endforeach
</tr>
@endforeach
</tbody>
 
@if (! empty($summaryRows))
<tfoot>
@foreach ($summaryRows as $summaryRow)
<tr>
@foreach ($summaryRow as $value)
<td>{{ $value }}</td>
@endforeach
</tr>
@endforeach
</tfoot>
@endif
</table>

Související dokumentace

Dokument Co pokrývá
Přehled tabulek Nastavení a stav tabulky
Sloupce Popisky sloupců, viditelnost a formátování
Filtry Filtrované dotazy použité exportem
Souhrny Součty připojené k exportům
Autorizace Omezení akcí exportu podle uživatele