laravel-admin导入Excel

在laravel-admin中使用到导入Excel表格官方文档介绍得不是特别全面,下面主要介绍一下在使用中的经验以及遇到的问题
1.首先按照官方放的方法生成文件并改写文件,如下代码
(1):Php artisan admin:action Post\ImportPost --name=“import data”
(2):改写文件,我的代码如下



namespace App\Admin\Actions\Enterprise;

use App\EnterpriseModel;
use App\Imports\EnterpriseImport;
use Encore\Admin\Actions\Action;
use function foo\func;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;

class ImportPost extends Action
{
    public $name = 'import data';

    protected $selector = '.import-post';

    public function model(array $row)
    {
        return new EnterpriseModel();
    }

    public function handle(Request $request)
    {
        Excel::import(new EnterpriseImport, $request->file('file'));
        return $this->response()->success('Success message...')->refresh();
    }

    public function form()
    {
        $this->file('file', 'Please select file')
            ->options(['showPreview' => false,
                'allowedFileExtensions'=>['xlsx'],
                'showUpload'=>true
            ]);
    }

    public function html()
    {
        return <<<HTML
        导入数据
HTML;
    }
}

3.在展示过程中主要是修改form中的options(在点击导入文件后会显示导入的详细内容导致乱码需要将showPreview属性修改成false)

4.引入laravel Excel按照官方文档用composer安装

5.handle是处理导入文件的处理逻辑,起主要使用了Maatwebsite\Excel,过程中需要先定义好EnterpriseImport,里面为定义需要导入的字段,如果存在头部需要继承WithHeadingRow

6.在grid(list)方法中加入tool,展示导入文件按钮

$grid->tools(function (Grid\Tools $tools) {
	$tools->append(new ImportPost());
});

总结:在功能完成后在导入大批量数据时会发生内存不够问题,这个问题花了我将近3个小时处理,以为是在使用过程中没有编写好代码,后来才发现是导入文件太大,本地机器分配的内存不够所导致(公司电脑太垃圾)。同时在在插入数据时导入字段不全或者没有时需要在Model中的fill中加入需要插入的字段。

你可能感兴趣的:(php)