yajra/laravel-datatables-export

Laravel DataTables 队列导出插件。

资助包维护!
yajra

v11.2.0 2024-09-02 05:54 UTC

README

Laravel 11 Latest Stable Version Continuous Integration Static Analysis Total Downloads License

本包是 Laravel DataTables 的插件,用于通过队列、OpenSpout 和 Livewire 处理服务器端导出。

要求

文档

Laravel 版本兼容性

快速安装

composer require yajra/laravel-datatables-export:^11.0

该包还需要批处理作业

php artisan queue:batches-table
php artisan migrate

服务提供者(自 Laravel 5.5+ 可选)

Yajra\DataTables\ExportServiceProvider::class

配置和资产(可选)

$ php artisan vendor:publish --tag=datatables-export --force

使用

  1. 将导出按钮 Livewire 组件添加到使用 dataTable 类的视图文件中。
<livewire:export-button :table-id="$dataTable->getTableId()"/>
  1. 在你的 DataTable 类中,使用 WithExportQueue
use Yajra\DataTables\WithExportQueue;

class PermissionsDataTable extends DataTable
{
    use WithExportQueue;
    
    ...
}
  1. 运行你的队列工作进程。例如: php artisan queue:work

清除导出文件

app\Console\Kernel.php 中,注册清除命令

$schedule->command('datatables:purge-export')->weekly();

导出文件名

您可以通过设置属性来设置导出文件名。

<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"/>

导出按钮名称

您可以通过设置 buttonName 属性来设置导出按钮名称。

<!-- Examples demonstrating how to customize the button name for different scenarios -->
<livewire:export-button :table-id="$dataTable->getTableId()" type="xlsx" buttonName="Export Excel"/>
<livewire:export-button :table-id="$dataTable->getTableId()" type="csv"  buttonName="Export CSV"/>

导出类型

您可以通过将属性设置为 csvxlsx 来设置导出类型。默认值是 xlsx

<livewire:export-button :table-id="$dataTable->getTableId()" type="xlsx"/>
<livewire:export-button :table-id="$dataTable->getTableId()" type="csv"/>

设置 Excel 工作表名称

选项 1:您可以通过设置属性来设置 Excel 工作表名称。

<livewire:export-button :table-id="$dataTable->getTableId()" sheet-name="Monthly Report"/>

选项 2:您还可以通过覆盖方法来设置 Excel 工作表名称。

protected function sheetName() : string
{
    return "Yearly Report";
}

格式化列

您可以通过在 DataTable 服务类中的列定义中设置来格式化列。

Column::make('mobile')->exportFormat('00000000000'),

上面的格式将手机号码视为带前导零的文本。

数字字段格式化

该包将自动检测数字字段,并可使用自定义格式。

Column::make('total')->exportFormat('0.00'),
Column::make('count')->exportFormat('#,##0'),
Column::make('average')->exportFormat('#,##0.00'),

日期字段格式化

当使用有效格式或为 DateTime 实例时,该包将自动检测日期字段。

Column::make('report_date')->exportFormat('mm/dd/yyyy'),
Column::make('created_at'),
Column::make('updated_at')->exportFormat(NumberFormat::FORMAT_DATE_DATETIME),

有效日期格式

有效日期格式可以在 datatables-export.php 配置文件中调整。

    '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,
    ]

强制将数字字段作为文本格式

选项:强制将自动检测的数字值作为文本格式。

Column::make('id')->exportFormat('@'),
Column::make('id')->exportFormat(NumberFormat::FORMAT_GENERAL),
Column::make('id')->exportFormat(NumberFormat::FORMAT_TEXT),

自动下载

选项:自动下载导出文件。

<livewire:export-button :table-id="$dataTable->getTableId()" filename="my-table.xlsx" auto-download="true"/>

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何安全问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件