Laravelで簡単にExcelからのCSVを読み込んで処理したい。

Goodby, CSV
https://github.com/goodby/csv#requirements

composer.json のrequireに“goodby/csv”を追加。

"require": {
    "goodby/csv": "*"
}

して、composerをアップデート

$ composer update
$ composer dump-autoload

モデル、ライブラリをuseして使う。

app/ItemCsv.php
<?php
namespace App;

use IlluminateDatabaseEloquentModel;

use GoodbyCSVImportStandardLexer;
use GoodbyCSVImportStandardInterpreter;
use GoodbyCSVImportStandardLexerConfig;

class ItemCsv extends Model
{
    
    protected $table = 'items'; 
    
    public static function import($path){
    
        $config = new LexerConfig();
        $config->setToCharset("UTF-8");
        $config->setFromCharset("sjis-win");
        $interpreter = new Interpreter();
        $tmp = array();
        $interpreter->addObserver(function(array $row) use (&$tmp) {
            $tmp[] = $row;
        });
        $lexer = new Lexer($config);
        $lexer->parse($path, $interpreter);
        dd($tmp);
    }
    
}

あとは、何処かしらから。

ItemCsv::import($path_to_csv_file);