Laravel获取Excel的内容以插入数据库

时间:2019-01-30 05:31:23

标签: php excel laravel

使用Laravel 5.6和Laravel Excel(maatwebsite 3.1)上传excel文件并将数据更新到数据库时遇到问题,我无法获取每一列的内容来更新数据库中的数据。

$rows返回空

Model:

namespace App;

use App\User;
use App\MyModel;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class DataImport implements ToCollection
{
    /**
    * @param array $rows
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function collection(Collection $rows)
    {
        dd($rows);
        foreach ($rows as $row) {
            $import = MyModel::where('user_id',$row[1])->first();
            $import->field1= $row[2];
            $import->field2= $row[5];
            $import->field3= $row[3];
            $import->status = 'SUCCESS';
            $import->save();
        }

    }
}


Controller:

    use Maatwebsite\Excel\Excel;

    public function postImport(Request $request){
        if($request->hasFile('sample_file')){
            Excel::import(new DataImport ,request()->file('sample_file'));

            return redirect('/import');
        }

    }

Excel文件:

--------------------------------------------------------------------------------
| #  | USER ID | FIELD ONE | FIELD TWO | FIELD THREE | FIELD FOUR | FIELD FIVE |
--------------------------------------------------------------------------------
| 1  |    1    |   123-abc |  abc-123  |    123123   |    asdf    |   konjesh  |
--------------------------------------------------------------------------------

2 个答案:

答案 0 :(得分:0)

if($request->hasFile('sample_file')){
   $getPath = Request::file('sample_file');
   $data = Excel::load($getPath, function($reader){ })->get();
   if(!empty($data){
      Excel::import(new DataImport , $data);

      return redirect('/import');
   }
} 

可以尝试一下吗,

答案 1 :(得分:0)

尝试先将上传的文件存储到磁盘:

0-4 mapped to 0
5-9 mapped to 5
10-14 mapped to 10, and so on.