【Laravel】データをExcelに出力する

PHP

はじめに

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を作成すれば、そこへ配列で落とし込むだけなので簡単に作成できます。

コメント