はじめに
LaravelでExcel形式のデータ出力を行ってみます。
いろいろな方法があるようですが、今回はViewを使用してExcelへエクスポートしてみます。
手順
まず表の元となるViewを作成します。
起算日と誕生日から年齢を算出し、西暦ごとに22年間の表を作ってみます。
Viewの内容は、Tableタグで作成します。
Viewのファイルは、sample.blade.phpとしました。
<table>
<tr>
<th></th>
<th>西暦</th>
<?php $i=0; ?>
@for($i = 0; $i < count($nenrei_array); $i++)
<?php $row = $nenrei_array[$i]; ?>
<?php $i++; ?>
@endfor
@for($j = 0; $j < count($row); $j++)
<th>{{$nenrei_array[0][$j]}}</th>
@endfor
</tr>
<tr>
<th></th>
<th>{{$ownername}}</th>
@for($j = 0; $j < count($row); $j++)
<th>{{$nenrei_array[1][$j]}}</th>
@endfor
</tr>
</table>
次に、以下コントローラーのように作成します。
Exportクラスを使用するので記述の追加を忘れずに行います。
use App\Exports\Export;
//基準日
$kisany = date('Y',strtotime("2019-12-13"));
$inputdate = str_replace("-", "", "2019-12-13");
//誕生日から基準日時点での年齢算出
$ownerbirthday = str_replace("-", "", "1967-10-10");
$ownername = "日本 太郎";
$ownernenrei = floor( ($inputdate - $ownerbirthday) / 10000);
//22年間分の配列
for($j = 0; $j < 2; $j++){
for($i = 0; $i <= 22; $i++){
switch ($j){
//西暦算出
case 0:
$nenrei_array[$j][$i] = $kisany + $i;
break;
//年齢算出
case 1:
$nenrei_array[$j][$i] = $ownernenrei + $i;
break;
}
}
}
コントロールは、
基準日:2019/12/13
誕生日:1967/10/10
二次元配列で、ゼロを西暦、1を年齢としています。
$view = \view('sample', compact('ownername','nenrei_array'));
return \Excel::download(new Export($view), 'fromflow.xlsx');
配列ができれば、最後にviewへの落とし込みと出力指定です。
1行目でviewの指定と配列指定。
2行目にエクスポートとファイル名を定義しています。
まとめ
Viewを作成すれば、そこへ配列で落とし込むだけなので簡単に作成できます。
コメント