Laravel Excel导入CSV加载数据

时间:2017-03-07 06:32:11

标签: php excel laravel csv import

我有这个CSV(没有行标题)

001001,BENITEZ LI,2052,2059,2016-04-27 09:07:20
001002,CASA PARRO,13937,13945,2016-04-21 09:07:20
001004,NUEVO BANC,701,709,2016-04-23 22:07:20

使用此脚本:

Excel::filter('chunk')->load(public_path().'/uploads/'.$filename)->chunk(250, function($results) {
                    foreach ($results as $row) {
                        $user = Lectura::create([
                            'partida' => $row->partida,
                            'nombre' => $row->nombre,
                            'lectura_ant' => $row->lectura_ant,
                            'lectura_act' => $row->lectura_act,
                            'fecha' => $row->fecha,                                       
                        ]);
                    }
                });

我希望使用此代码导入到我的数据库,我可以正确获取每一行。但添加了空值。转储变量:

CellCollection {#734 ▼
  #title: null
  #items: array:5 [▼
    "001001" => "001002"
    "benitez_li" => "CASA PARRO"
    2052 => 13937.0
    2059 => 13945.0
    "2016_04_27_090720" => "2016-04-21 09:07:20"
  ]
}

也许应该(如何定义列名?):

CellCollection {#734 ▼
  #title: null
  #items: array:5 [▼
    "partida" => "001002"
    "nombre" => "CASA PARRO"
    "lectura_ant"=> 13937.0
    "lectura_act"=> 13945.0
    "fecha" => "2016-04-21 09:07:20"
  ]
}

或更好(转换为数组)。如何获得价值? $ row [1],$ row [2] ....

CellCollection {#734 ▼
  #title: null
  #items: array:5 [▼
    "0" => "001002"
    "1" => "CASA PARRO"
    "2"=> 13937.0
    "3"=> 13945.0
    "4" => "2016-04-21 09:07:20"
  ]
}

1 个答案:

答案 0 :(得分:1)

解决了!!添加两行:

        $rows = Excel::load(public_path().'/uploads/'.$filename, function($reader) {
            $reader->toArray();
            $reader->noHeading();
        })->get();

       foreach ($rows as $row) {
           $item = array([
                'partida' => $row[0],
                'nombre' => $row[1],
                'lectura_ant' => $row[2],
                'lectura_act' => $row[3],
                'fecha' => $row[4], 
            ]);
            DB::table('lecturas_temp')->insert($item );
        }