【问题标题】:Excel Importing Getting ErrorExcel 导入出错
【发布时间】:2017-01-22 13:21:28
【问题描述】:

我想将我的 excel (XLSX) 文件导入到我的数据库中。我的文件有 3 张纸,每张纸有 42000 到 55000 行和 11 列。

我正在使用 Maatwebsite/Laravel-Excel

什么时候上传我的文件时出错

Serialization of closure failed: Serialization of 'Closure' is not allowed

我的代码是

        Excel::filter('chunk')->load($file)->chunk(250, function($reader) use ($request)
        {
            $filePath = $request->file_name;

            $getFileInfo = session()->get('fileinfo');

            $insertFileInfo = FileInfo::firstOrCreate($getFileInfo);
            $getCaseID = $insertFileInfo->case_id;

            //dd($insertFileInfo);

            $datetime = $request->datetime;

            $aparty = $request->aparty;
            $bparty = $request->bparty;
            $call_duration = $request->call_duration;
            $usage_type = $request->usage_type;
            $lac = $request->lac;
            $cell = $request->cell;
            $imei = $request->imei;
            $imsi = $request->imsi;
            $address = $request->address;
            $network_type = $request->network_type;
            foreach ($reader->toArray() as $row) {
                foreach ($row as $item) {
                    if (!empty($item[$datetime]) && ($item[$datetime] != $datetime)) {

                        $data = [
                            'case_id' => $getCaseID,
                            'datetime' => $datetime == "NO Data Field" ? '' : Carbon::parse(self::clean($item[$datetime]))->toDateTimeString(),
                            'aparty' => $aparty == "NO Data Field" ? '' : self::clean($item[$aparty]),
                            'bparty' => $bparty == "NO Data Field" ? '' : self::clean($item[$bparty]),
                            'call_duration' => $call_duration == "NO Data Field" ? '0' : str_replace('second(s)', '', $item[$call_duration]) == '' ? '0' : str_replace('second(s)', '', $item[$call_duration]),
                            'usage_type' => $usage_type == "NO Data Field" ? 'Undefined' : str_replace(' ', '_', $item[$usage_type]),
                            'lac' => $lac == "NO Data Field" ? self::convertCellToLac($item[$cell]) : $item[$lac],
                            'cell' => $cell == "NO Data Field" ? self::convertCellFormat($item[$cell]) : self::convertCellFormat($item[$cell]),
                            'imei' => $imei == "NO Data Field" ? 'Undefined' : $item[$imei] == '' ? 'Undefined' : $item[$imei],
                            'imsi' => $imsi == "NO Data Field" ? 'Undefined' : $item[$imsi] == '' ? 'Undefined' : $item[$imsi],
                            'address' => $address == "NO Data Field" ? 'Undefined' : $item[$address] == '' ? 'Undefined' : $item[$address],
                            'network_type' => empty($item[$network_type]) ? 'Undefined' : $network_type == "NO Data Field" ? 'Undefined' : $item[$network_type]
                        ];
                        try {
                            CallCdr::firstOrCreate($data);

                        } catch (\Exception $e) {
                        }

                    }

                }


            }
    });

return redirect()->route('home');

我不使用use ($request) 然后这个错误消失了,但我需要所有请求参数。

也不重定向。

【问题讨论】:

    标签: excel laravel laravel-5 laravel-5.3 maatwebsite-excel


    【解决方案1】:

    这是预期的行为。您不能序列化请求。

    要解决此问题,您只需将请求中的相关详细信息分配给单独的变量,然后将它们传递给chunk()

    $inputs = $request->all(); // returns an array
    
    Excel::filter('chunk')->load($file)->chunk(250, function($reader) use ($inputs) {
       ....
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多