xiaomlove / grid-exporter
为laravel-admin导出网格数据
v0.1.0
2019-04-16 16:49 UTC
Requires
- php: >=7.0.0
- encore/laravel-admin: ~1.6
- maatwebsite/excel: ^3.1
Requires (Dev)
- phpunit/phpunit: ~6.0
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 Excel和PhpSpreadsheet
许可证
许可协议:MIT许可证(MIT),详情请见LICENSE文件。