Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@yamaharu1111

【Laravel Excel】読み込んだファイルを編集して出力する方法

はじめに

業務でExcelファイルを出力する必要が出たため使用しました。

42列×1万行ほど出力する予定で、bladeテンプレートを使った場合と比較した結果、Excel雛形を用意したほうが速かったので今回はそちらを使用しました。

環境

Laravel 5.2
Laravel Excel 2.1
php 7.0

インストール

インストールについてはdocumentにLaravelバージョンごとの案内があるのでそれにしたがってください。
config/app.phpのServiceProviderとaliassesに追加しておくとuse Excelで呼び出せて便利です。

composer update後にphp artisan config:cacheをしないと反映されないみたいなので忘れずに!

やり方


//読み込み
Excel::load('file.xlsx', function($file) {
  //シートの選択
  $file->sheet('sheet1', function($sheet) {
    $sheet->row(1, ['apple', '100']);
    $sheet->row(2, ['banana', '30']);
    $sheet->row(3, ['orange', '200']);
  }
//出力形式の選択
})->export('xlsx')

まずExcel::loadで雛型ファイルを指定します。
※ver3以降はExcel::import($yourImport)に置き換えられているそうです。

雛形はstorageやresource配下に置くかと思いますが、Laravelのヘルパ関数で簡単にパスを取得できます。

シートの選択は、存在しないシート名を入れるとエラーになってしまうので、必要なシートは前もって作成しておく必要があります。

データの書き込みは、行ごとに\$sheet->row()に行番号と配列を渡すことで実行できます。
$sheet->cell()を使えばセルごとの書き込みも可能です。

出力はexport()で、引数に出力形式を入れるだけです。読み込みファイルと出力形式を変えることもできます。

便利なメソッド

$file->setFileName( Carbon::now()->format('Ym').'dataList');

取り込みと出力でファイル名を変えたい場合に便利です。
需要ありそうなのに何故かdocumentに載っていなかったので、、、

$sheet->getStyle('A1:K3')->applyFromArray([
  'borders' => [ 'allborders' => [ 'style' => \PHPExcel_Style_Border::BORDER_THIN ] ]
]);

Excelに罫線を付けます。
documentだとsetAllBordersなどが紹介されていますが、使えなかったので、、、
こちらのissueに助けられました

ほかにもセルごとに色を変えたりフォントやフォーマットの指定もできます。

雛形ファイルを使うとレイアウトの指定も楽なのでおすすめです。
参考にしていただければ幸いです。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?