今回はLaravelのライブラリの一つLaravel Excelについて紹介したいと思います。
公式:http://www.maatwebsite.nl/laravel-excel/docs
GitHub:https://github.com/Maatwebsite/Laravel-Excel
Laravel ExcelはExcelファイルやCSVファイルを簡単にインポート、エクスポー トできるようになるライブラリです。また、LaravelのEloquentとの相性がとても良くできています。なおLGPLライセンスです。
それではLaravel Excelの導入方法と使い方について簡単に説明していきたいと思います。
(Laravel5を想定)
インポートの基本的な使い方についての記事も書きました!
導入方法
まず始めにcomposer.jsonのrequire部分にパッケージを追加しcomposer update を実行します。これによりPHPOfficeのPHPExcelも同時にインストールされます。
"maatwebsite/excel": "~2.1.0"
その後に、config/app.phpのproviders arrayの中に以下を追加。
'Maatwebsite\Excel\ExcelServiceProvider',
また、aliasses arrayの中に以下を追加します。
'Excel' => 'Maatwebsite\Excel\Facades\Excel',
これでLaravel Excelの使う準備はできました!
出力方法
ファイル名と出力形式
まずは基本形です。
Excel::create('Filename', function($excel) {
// ファイルの中身を書き込む
})->export("xlsx");
createメソッドの第一引数に出力するファイル名。そして->export($ext) によって出力形式を指定します。出力形式は上記のxlsxの他、xls, csvやpdfを指定することができます。(pdfを使用する場合は、“dompdf/dompdf”: “~0.6.1” , “mpdf/mpdf”: “~5.7.3” , “tecnick.com/tcpdf”: “~6.0.0” のいずれかのライブラリが追加で必要。)
->export($ext) と->download($ext) は同じ処理がされます。また代わりに->store($ext) を使うことで、サーバーのapp/storage/exportsに保存する処理となります。storeメソッドは第二引数にpathを指定することで自由に保存場所を変更できます。
シートの操作
次にシートに関する情報の書き込み方を説明します。先程の基本形のファイルを書き込む部分に追加していきます。
Excel::create('Filename', function($excel) {
// 最初のシート
$excel->sheet('first sheet', function($sheet) {
// シートの中身について
});
// 2番目のシート
$excel->sheet('second sheet', function($sheet) {
//
});
})->export("xlsx");
sheetメソッドを使うことによってシートを作成でき、並べることによって複数のシートを作成可能です。第一引数にシート名を指定しています。
次にLaravelのEloquentを使って、実際シートにデータを入れてみましょう。
$books = Book::all();
Excel::create('Filename', function($excel) use ($books) {
// 最初のシート
$excel->sheet('first sheet', function($sheet) use ($books) {
$sheet->fromArray($books);
});
})->export("xlsx");
Bookというモデルがあったとして、fromArrayメソッドにそのモデルを渡すだけで、
1行目に$booksのキー名、2行目以降が$booksの値が入ったExcelファイルがダウンロード可能となります。
fromArrayメソッドでは、複数行を一気にデータを書き込むことできましたが、row, appndRowメソッドを使うことで一行ずつデータを書き込むこともできます。
// 1行目にデータを書き込み
$sheet->row(1, array("test1", "test2"));
// 追加でデータを書き込み(2行目~6行目)
for($i=0; $i<5; $i++){
$sheet->appendRow(array($i, "test"));
}
以上がシートの操作となります。
セルの操作
シートの操作では主にデータの書き込みでしたが、セルの操作では書式設定(フォント、色、罫線)が行えます。以下が基本形となります。
// A1のセルを操作
$sheet->cell('A1', function($cell) {
// 操作内容
});
// A1:A5の範囲をセル操作
$sheet->cells('A1:A5', function($cells) {
//
});
・フォントに関して
// フォントの色を変更
$cells->setFontColor('#ffffff');
// フォントのスタイルを変更
$cells->setFontFamily('Calibri');
// フォントサイズ変更
$cells->setFontSize(16);
// 太字に変更
$cells->setFontWeight('bold');
// 以下のようにまとめて指定することも可能
$cells->setFont(array(
'family' => 'Calibri',
'size' => '16',
'bold' => true
));
・罫線
// 各方向の罫線情報をセット (上, 右, 下, 左)
$cells->setBorder('solid', 'none', 'none', 'solid');
// 配列を使った指定方法もあります
$cells->setBorder(array(
'top' => array(
'style' => 'solid'
),
));
・水平方向・垂直方向の位置
// 水平方向の中央
$cells->setAlignment('center');
// 上下中央揃え
$cells->setValignment('center');
セルサイズ
セルの幅や高さの指定はシートの操作の一部です。
// A列の幅を指定
$sheet->setWidth('A', 5);
// 配列を使うことで複数列を同時に指定
$sheet->setWidth(array(
'A' => 5,
'B' => 10
));
// 1行目の高さを指定
$sheet->setHeight(1, 50);
// 配列を使い複数行指定
$sheet->setHeight(array(
1 => 50,
2 => 25
));
まとめ
上述したようにLaravel Excelを使うことでLaravelで扱っているデータを簡単・綺麗にエクセルファイルで出力することができます。紹介したメソッド以外にも”行の固定”や”セルの結合”等様々なことができるので、ぜひ利用してもらいたいです。また、出力以外に入力もできるので別の機会に紹介できたらと思います。