Laravel:如何导入Excel文件到数据库

我想通过Excel文件导入一些数据到数据库。 但是,当上传注意到上传到数据库。

我不确定这里有什么问题,如果有人发现,希望能帮我find答案。

这是我的控制器:

public function importExcel() { if(Input::hasFile('import_file')){ $path = Input::file('import_file')->getRealPath(); $data = Excel::load($path, function($reader){})->get()->toArray(); if(!empty($data) && $data->count()){ foreach ($data as $key => $value) { $insert[] = ['title' => $value->title, 'description' => $value->description]; } if(!empty($insert)){ DB::table('items')->insert($insert); // dd('Insert Record successfully.'); } } } return back(); } 

这里是刀片视图:

 <html lang="en"> <head> <title>Import - Export Laravel 5</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" > </head> <body> <nav class="navbar navbar-default"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#">Import - Export in Excel and CSV Laravel 5</a> </div> </div> </nav> <div class="container"> <a href="{{ URL::to('downloadExcel/xls') }}"><button class="btn btn-success">Download Excel xls</button></a> <a href="{{ URL::to('downloadExcel/xlsx') }}"><button class="btn btn-success">Download Excel xlsx</button></a> <a href="{{ URL::to('downloadExcel/csv') }}"><button class="btn btn-success">Download CSV</button></a> <form style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 10px;" action="{{ URL::to('importExcel') }}" class="form-horizontal" method="post" > <input type="file" name="import_file" /> {!! Form::token(); !!} {!! csrf_field() ; !!} <button class="btn btn-primary">Import File</button> </form> </div> </body> </html> 

我想上传一个文件如下图: 在这里输入图像说明

请使用:使用Maatwebsite \ Excel \ Facades \ Excel;

并确保excel列标题的名称与数据库字段名称完全相同:

 public function importExcelDemo(Request $request) { $rules = array( 'import_file' => 'required' ); $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { return Redirect::to('/home')->withErrors($validator); } else { try { Excel::load('C:/Users/EBIZ43/Downloads/'. $request['import_file'], function ($reader) { foreach ($reader->toArray() as $row) { $data = $this->ads_repo->prepareData($row); $result = $this->ads_repo->create($data); } }); \Session::flash('success', 'Data imported successfully.'); return redirect('/home'); } catch (\Exception $e) { \Session::flash('error', $e->getMessage()); return redirect('/home'); } } } 

我认为你的表单中缺less的是enctype =“multipart / form-data”。 希望能帮助到你

一般来说,当您使用过时的Facades时,我看到您标记了您的问题Laravel 5。

我会build议您的代码的以下更新:

 public function importExcel(Request $request) { $file = $request->file('import_file') if($file){ $path = $file->getRealPath(); $data = Excel::load($path, function($reader) { })->get(); if(!empty($data) && $data->count()){ foreach ($data as $key => $value) { $insert[] = ['title' => $value->title, 'description' => $value->description]; } if(!empty($insert)){ DB::table('items')->insert($insert); // dd('Insert Record successfully.'); } } } } 

我会说,你已经安装了Excel库。