laravel5.1でExcel/CSVを取り扱う方法(laravel-excelというパッケージを使おうと思ったけど、結局コーディングだけで実装した)

laravel5.1でExcel/CSVを取り扱う方法(laravel-excelというパッケージを使おうと思ったけど、結局コーディングだけで実装した)

http://www.maatwebsite.nl/laravel-excel/docs

サイトに書いてある通りに、composer.jsonに情報を書き込んだけどエラー。

キャッシュクリアしたら、ちゃんと動作した。
その前に、laravel-excelの記述をせずに、composer updateしたのが良かったのか?

ダウンロードされたので、これで使えるようになったはず。

と思ったら、単純なサンプルプログラムすら、エラーで動かない~。
Call to undefined method Maatwebsite\Excel\Facades\Excel::create()

色々とググったら、キャッシュが悪さをしているっぽい。リフレッシュしたら普通に動いた。
http://stackoverflow.com/questions/31491381/laravel-5-excel-installation-failure
php artisan config:cache

サンプル通りエクセルでもCSVでもダウンロードできた(exportもdownloadも同じ動作)
問題は、csvでutf-8だとエクセルで開けない(文字化けする)
なので、文字コードを設定する方法が書いてない…。しょうがないので内部コードを読んでいると、以下の関数で生成しているらしい。
PHPExcel_IOFactory::createWriter($this->excel, $this->format);

公式HPに行ってみると、FAQの先頭に以下のような記述が! http://phpexcel.codeplex.com/

There seems to be a problem with character encoding…
(文字コードに問題があるみたいなんだけど…。)

It is necessary to use UTF-8 encoding for all texts in PHPExcel. If the script uses different encoding then it is possible to convert the texts with PHP’s iconv() function.
(PHPExcelでは、全てのテキストはUTF-8を使用する必要があります。異なった文字コードを使いたい場合は、可能な限りiconv()関数で変換して使って下さい)

マジか~、道理で文字コードを指定する場所が全然無いわけだよ!
う~ん、これだと面倒だな。

1, カラムは、””で囲む
2, 文字コードは、sjis(エクセルで開くため)

の条件を満たせない…。

leage/CSVってのも試してみたけど、似たり寄ったりな感じだ。
http://qiita.com/kumechang/items/59ae5dc4b5d065e4d766

結局、以下のサイトを参考に自分でガリガリコーディングするのが一番早かった…。
http://xirasaya.com/?m=detail&hid=411
http://qiita.com/zaburo/items/07c5729e542030496006

User.php (テーブルに関わる処理なので、モデルクラスに実装)

コメントを残す

メールアドレスが公開されることはありません。