2016-08-06 43 views
0

我想通過Excel文件導入一些數據到數據庫。但是,當上傳注意到上傳到數據庫。Laravel:如何導入Excel文件到數據庫

我不確定這裏有什麼問題,如果有人發現,希望能幫我找到它。

這裏是我的控制器:

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> 

,我想上傳一個文件中像下面圖片: enter image description here

+0

你正在運行哪個Laravel版本? –

+0

嘗試此網址:http://www.maatwebsite.nl/laravel-excel/docs/import –

回答

0

一般情況下,我看到你在使用過時的Facades時標記了你的問題Laravel 5。

我建議以下更新到您的代碼:

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庫。

+0

我已將其更改爲您的代碼,但沒有任何更改。 – Hola

1

請使用: 使用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'); 
     } 
    } 
} 
1

我覺得缺少什麼是這個ENCTYPE =「的multipart/form-data的」在您的形式。希望它有幫助

相關問題