LaravelでCSVファイルをインポートしたいときの方法をメモしておきます。
サンプルコード
このままコピペして使えばOKです。
name:csvでPOSTされたCSVファイルを扱うサンプルとなっています。
// CSVファイルを取得する
$tmp = mt_rand() . "." . $request->file('csv')->guessExtension();
$request->file('csv')->move(public_path() . "/tmp", $tmp);
$filepath = public_path() . "/tmp/" . $tmp;
// CSV取得
$file = new \SplFileObject($filepath);
$file->setFlags(
\SplFileObject::READ_CSV |
\SplFileObject::READ_AHEAD |
\SplFileObject::SKIP_EMPTY |
\SplFileObject::DROP_NEW_LINE
);
//各行を処理する
foreach ($file as $line) {
echo $line[0]; //1列目
echo $line[1]; //2列目
//......以下略
}
// 一時ファイルを削除する
unlink($filepath);
注意点
CSVファイルの文字コードはUTF-8とすること。Shift_JISでは取り込む際にエラーとなる。
コメント