Package Data | |
---|---|
Maintainer Username: | yajra |
Maintainer Contact: | aqangeles@gmail.com (Arjay Angeles) |
Package Create Date: | 2017-08-13 |
Package Last Update: | 2024-10-09 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-17 03:09:28 |
Package Statistics | |
---|---|
Total Downloads: | 527,690 |
Monthly Downloads: | 51,881 |
Daily Downloads: | 1,101 |
Total Stars: | 30 |
Total Watchers: | 5 |
Total Forks: | 18 |
Total Open Issues: | 3 |
This package is a plugin of Laravel DataTables for handling server-side exporting using Queue, OpenSpout and Livewire.
| Laravel | Package | |:--------|:--------| | 8.x | 0.x | | 9.x | 1.x | | 10.x | 10.x |
composer require yajra/laravel-datatables-export
The package also requires batch job:
php artisan queue:batches-table
php artisan migrate
Yajra\DataTables\ExportServiceProvider::class
$ php artisan vendor:publish --tag=datatables-export --force
<livewire:export-button :table-id="$dataTable->getTableId()"/>
DataTable
class, use WithExportQueue
use Yajra\DataTables\WithExportQueue;
class PermissionsDataTable extends DataTable
{
use WithExportQueue;
...
}
php artisan queue:work
On app\Console\Kernel.php
, register the purge command
$schedule->command('datatables:purge-export')->weekly();
You can set the export filename by setting the property.
<livewire:export-button :table-id="$dataTable->getTableId()" filename="my-table.xlsx"/>
<livewire:export-button :table-id="$dataTable->getTableId()" filename="my-table.csv"/>
<livewire:export-button :table-id="$dataTable->getTableId()" :filename="$filename"/>
You can set the export type by setting the property to csv
or xlsx
. Default value is xlsx
.
<livewire:export-button :table-id="$dataTable->getTableId()" type="xlsx"/>
<livewire:export-button :table-id="$dataTable->getTableId()" type="csv"/>
Option 1: You can set the Excel sheet name by setting the property.
<livewire:export-button :table-id="$dataTable->getTableId()" sheet-name="Monthly Report"/>
Option 2: You can also set the Excel sheet name by overwriting the method.
protected function sheetName() : string
{
return "Yearly Report";
}
You can format the column by setting it via Column definition on you DataTable service class.
Column::make('mobile')->exportFormat('00000000000'),
The format above will treat mobile numbers as text with leading zeroes.
The package will auto-detect numeric fields and can be used with custom formats.
Column::make('total')->exportFormat('0.00'),
Column::make('count')->exportFormat('#,##0'),
Column::make('average')->exportFormat('#,##0.00'),
The package will auto-detect date fields when used with a valid format or is a DateTime instance.
Column::make('report_date')->exportFormat('mm/dd/yyyy'),
Column::make('created_at'),
Column::make('updated_at')->exportFormat(NumberFormat::FORMAT_DATE_DATETIME),
Valid date formats can be adjusted on datatables-export.php
config file.
'date_formats' => [
'mm/dd/yyyy',
NumberFormat::FORMAT_DATE_DATETIME,
NumberFormat::FORMAT_DATE_YYYYMMDD,
NumberFormat::FORMAT_DATE_XLSX22,
NumberFormat::FORMAT_DATE_DDMMYYYY,
NumberFormat::FORMAT_DATE_DMMINUS,
NumberFormat::FORMAT_DATE_DMYMINUS,
NumberFormat::FORMAT_DATE_DMYSLASH,
NumberFormat::FORMAT_DATE_MYMINUS,
NumberFormat::FORMAT_DATE_TIME1,
NumberFormat::FORMAT_DATE_TIME2,
NumberFormat::FORMAT_DATE_TIME3,
NumberFormat::FORMAT_DATE_TIME4,
NumberFormat::FORMAT_DATE_TIME5,
NumberFormat::FORMAT_DATE_TIME6,
NumberFormat::FORMAT_DATE_TIME7,
NumberFormat::FORMAT_DATE_XLSX14,
NumberFormat::FORMAT_DATE_XLSX15,
NumberFormat::FORMAT_DATE_XLSX16,
NumberFormat::FORMAT_DATE_XLSX17,
NumberFormat::FORMAT_DATE_YYYYMMDD2,
NumberFormat::FORMAT_DATE_YYYYMMDDSLASH,
]
Option to force auto-detected numeric value as text format.
Column::make('id')->exportFormat('@'),
Column::make('id')->exportFormat(NumberFormat::FORMAT_GENERAL),
Column::make('id')->exportFormat(NumberFormat::FORMAT_TEXT),
Option to automatically download the exported file.
<livewire:export-button :table-id="$dataTable->getTableId()" filename="my-table.xlsx" auto-download="true"/>
Please see CONTRIBUTING for details.
If you discover any security related issues, please email aqangeles@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.