この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:guest
更新日時:2018-05-05 10:50:47

タイトル: CSVのアップロードおよび読み込み

本稿はLaravelの「maatwebsite/excel」パッケージを使用したCSVファイルの読み込み方法を説明します。

 

maatwebsite/excelの導入

以下のコマンドを実行します。

composer require "maatwebsite/excel:~2.1.0"

※2018/5/5現在、バージョン3にはインポート機能が無いのでバージョン2にしましょう。

 

プロバイダー登録

config/app.php」にプロバイダーとして追加登録します。

'providers' => [

Maatwebsite\Excel\ExcelServiceProvider::class,

]

...

'aliases' => [

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

]

 

CSVの読み込み

以下はブラウザからCSVのアップロードを想定した実装例です。

 

【クライアント側】

<form method="POST" action="{{ url('...') }}" enctype="multipart/form-data">
    <input type="file" name="csv">
    <button type="submit">Submit</button>
</form>

 

【サーバー側】

use Excel;

...

class CsvController extends Controller

public function readCsv(Request $request) {

 

        $file = $request->file('file');

        $loadedFile = Excel::load(
                $file->getRealPath()
                ,function($reader){}
                )->get();

        $rows = $loadedFile->toArray();

        foreach ($rows as $row){
            \Log::info('row: ' . var_export($row, true));
        }        

...

}

}

 

【出力結果】

[2018-05-05 10:47:41] local.INFO: row: array (
  'header1' => 'val1-1',
  'header2' => 'val1-2',
)
[2018-05-05 10:47:41] local.INFO: row: array (
  'header1' => 'val2-1',
  'header2' => 'val2-2',
)