xiaomlove/grid-exporter

为laravel-admin导出网格数据

v0.1.0 2019-04-16 16:49 UTC

This package is auto-updated.

Last update: 2024-09-28 02:12:36 UTC


README

安装

$ composer require xiaomlove/grid-exporter -vvv

配置

grid-exporter支持1个配置,打开config/admin.php找到extensions

    'extensions' => [
    
        'grid-exporter' => [
        
            // Set this to false if you want to disable this extension
            'enable' => true,

        ]
    ]

用法

如果此扩展已启用,则将其注册为默认导出器(替换Encore\Admin\Grid\Exporters\CsvExporter
如果您想格式化指定的列,请手动使用。在您的控制器中

use Chenyulingxi\LaravelAdmin\GridExporter\Exporter;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Events\BeforeExport;

...

protected function grid()
{
    $grid = new Grid(new Test);

    $grid->id('Id');
    $grid->name('Name');
    $grid->created_at('Created at');
    $grid->updated_at('Updated at');

    $exporter = new Exporter();
    
    //format the name column
    $exporter->format('name', function ($value) {
        //In the format callback closure, $this bindTo the eloquent model
        return strtolower($value); 
    });
    
    // replace the grid table header
    $exporter->withHeadings([
        'id' => '编号',
        'name' => '姓名',
        'created_at' => '创建时间',
        'updated_at' => '更新时间',
    ]);
    
    //change output file (xlsx) style
    $exporter->setEvents([
        BeforeExport::class  => function(BeforeExport $event) {
            $event->writer->getDelegate()->getProperties()->setCreator('xiaomlove');
        },
        AfterSheet::class => function ($event) {
            $sheet = $event->sheet;
            $highestColumn = $sheet->getHighestColumn();
            $highestRow = $sheet->getHighestRow();
            $styles = [
                'font' => [
                    'bold' => true,
                ],
                'fill' => [
                    'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_GRADIENT_LINEAR,
                    'rotation' => 90,
                    'startColor' => [
                        'argb' => 'FFA0A0A0',
                    ],
                    'endColor' => [
                        'argb' => 'FFFFFFFF',
                    ],
                ]
            ];
            $sheet->getStyle("A{$highestRow}:{$highestColumn}{$highestRow}")->applyFromArray($styles);
        }
    ]);
    
    // set write type, default xlsx
    $exporter->setWriteType(\Maatwebsite\Excel\Excel::CSV);
    
    // set the file name
    $exporter->setFileName('test-export');
    
    $grid->exporter($exporter);

    return $grid;
}

...

如果您想更多控制输出文件,可以创建一个继承自Chenyulingxi\LaravelAdmin\GridExporter\DataSource的类,然后将其实例注入到导出器中,如下所示

$exporter->setDataSource(new TestDataSource());

更多信息请参考Laravel ExcelPhpSpreadsheet

许可证

许可协议:MIT许可证(MIT),详情请见LICENSE文件