数据导出

model-grid内置的导出功能只是实现了简单的csv格式文件的导出,如果遇到文件编码问题或者满足不了自己需求的情况,可以按照下面的步骤来自定义导出功能

本示例用Laravel-Excel作为excel操作库,当然也可以使用任何其他excel库

首先安装好它:

  1. composer require maatwebsite/excel:~2.1.0
  2. php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

然后新建自定义导出类,比如app/Admin/Extensions/ExcelExpoter.php:

  1. <?php
  2. namespace App\Admin\Extensions;
  3. use Encore\Admin\Grid\Exporters\AbstractExporter;
  4. use Maatwebsite\Excel\Facades\Excel;
  5. use Illuminate\Support\Arr;
  6. class ExcelExpoter extends AbstractExporter
  7. {
  8. public function export()
  9. {
  10. Excel::create('Filename', function($excel) {
  11. $excel->sheet('Sheetname', function($sheet) {
  12. // 这段逻辑是从表格数据中取出需要导出的字段
  13. $rows = collect($this->getData())->map(function ($item) {
  14. return Arr::only($item, ['id', 'title', 'content', 'rate', 'keywords']);
  15. });
  16. $sheet->rows($rows);
  17. });
  18. })->export('xls');
  19. }
  20. }

然后在model-grid中使用这个导出类:

  1. use App\Admin\Extensions\ExcelExpoter;
  2. $grid->exporter(new ExcelExpoter());

有关更多Laravel-Excel的使用方法,参考laravel-excel/docs