WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
Laravel Excelでシートの作成

Laravel Excelでシートの作成

このエントリーをはてなブックマークに追加

Laravel Excelでシートを作成するには、sheetメソッドを使用します。

sheet(‘シート名’,’クロージャー’)

sheetメソッドの第1引数には、シート名、第2引数にはクロージャーを指定します。

Excel::create('filename',function($excel){
 $excel->sheet('sheetname',function($sheet){
 //ここにシートを作成するためのロジックを記述します。
 });
 })->export('xlsx');

また、複数シートの指定もできます。

Excel::create('Filename',function($excel){
 //一つ目のシート
 $excel->sheet('First sheet',function($sheet){
 });
 //二つ目のシート
 $excel->sheet('Second sheet',function($sheet){
 });
 })->export('xlsx');

シートのプロパティ変更

シートのプロパティは、set+プロパティメソッドで、変更することができます。

Excel::create('Filename',function($excel){
 $excel->sheet('Sheetname',function($sheet){
 //印刷方向を横に指定します。
 $sheet->setOrientation('landscape');
 });
 ])->export('xlsx');

ページ余白の設定

シートのページ余白を指定するには、setPageMarginメソッドを使用します。余白の指定方法は、すべての余白を同じ数字にするには、数値で指定し、上下左右別々で指定するには、配列で(上、右、下、左)の順に指定します。

//ページの上、右、下、左の余白を指定します。
 $sheet->setPageMargin(array(
 0.25,0.30,0.25,0.30
 ));
//すべての余白を同じ値で指定します。
 $sheet->setPageMargin(0.25);

※上記余白の値は、インチでの指定ですので、0.25インチは、約0.635センチ、0.30インチは0.762センチになりますので注意して下さい。

尚、app/config/maatwebsite/excel/export.phpの83行の’page_margin’=>false,のfalseの箇所にデフォルトの余白の値をインチ数で指定しておくこともできます。

配列の値でシートの作成

fromArrayメソッドを使用すれば、配列の値で、シートを作成することができます。

fromArray(‘配列データ’,nullの値、セルの開始位置,0の表示の有無,見出し行の有無)

fromArrayの第1引数には、配列の値を指定します。第2引数には、空白セルの指定値?を指定します。第3引数にはセルの開始位置、そして第4引数には、*0を表示するかどうかの指定を行います。第5引数は、セルの見出し行の有無を指定します。

Excel::create('Filename',function($excel){
 $excel->sheet('Sheetname',function($sheet){
 $sheet->fromArray([
 ['data1','data2'],
 ['data3,'data4']
 ]);
 });
 })->export('xlsx');

with()メソッド

fromArrayメソッドの代わりに、withメソッドを使用することもできます。

$sheet->with([
 ['data1,'data2'],
 ['data3,'data4']
 ]);

use($data)

外部からクロージャーに変数を渡したい場合は、use()を使用することができます。

public function getIndex(){
 $data = User::all();
 Excel::create('ユーザー一覧', function($excel) use($data) {
 $excel->sheet('ユーザー一覧', function($sheet) use($data) {
 $sheet->fromArray($data);
 });
 })->export('xlsx');
 }

下記のようなExcelファイルが簡単に作成できます。

2014-08-16 16-34-27

0の値の表示

デフォルトでは、配列データに0の値を指定しても、空白セルと判断して、何も表示されません。そこで、第4引数にtrueを指定することで、0の値を0と判断して、0の文字を表示するようになります。

見出し行の生成の有無

上記の画像でも分かるように、デフォルトでは、モデルの属性名を見出し行として、生成します。見出し行としてモデルの属性名を使用したくないときは、fromArrayメソッドの第5引数にfalseを指定するか、app/config/packages/maatewbsite/excel/export.phpの48行目のtrueをfalseに変更します。

‘generate_heading_by_indices’  => false,

 fromModel(‘モデル名’)

fromModelメソッドを使用すれば、Eloquentモデルからデータを取得することができます。

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です