Laravel Excelは、かゆい所に手が届く??
Laravel Excelのインストールの仕方や使い方については、いくつかのサイトを参考にして何とかなると思います。
問題は、デフォルトのスタイルが、使い道に意図したデザインにならないのを何とかしたい!
例えば。。。。
・フォント
・フォントサイズ
・文字の折り返し
・文字の詰め方向
・列幅
設定はこうしたらできた。使いたい機能は、implementsの後に、付け足して、それに関連するpublic functionを書いて行くと良い。
顧客リストをエクスポートする場合の例で
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithDefaultStyles;
use Maatwebsite\Excel\Concerns\WithHeadings;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Style;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class CompaniesExport implements FromArray, WithHeadings, WithDefaultStyles, ShouldAutoSize, WithColumnWidths
{
protected $companies;
/**
* コントローラーからエクスポートする配列を受け取る
*/
public function __construct(array $companies)
{
$this->companies = $companies;
}
/**
* @return array
*/
public function array(): array
{
return $this->companies;
}
/**
* 1行目にヘッダーを入れる内容
* @return array
*/
public function headings(): array
{
return [
'ID',
'法人名',
'郵便番号',
'都道府県',
'市区町村',
'丁目・番地',
'ビル名',
'電話番号',
'FAX番号'
];
}
/**
* @param Worksheet $sheet
* 列幅を数値で入れる
* @return void
*/
public function columnWidths(): array
{
return [
'A'=>12,
'B'=>25,
'C'=>25,
'D'=>12,
'E'=>18,
'F'=>12,
'G'=>10,
'H'=>25,
'I'=>12,
];
}
/**
* スタイルを設定する
* @return array
*/
public function defaultStyles(Style $defaultStyle)
{
// Or return the styles array
return [
'font' => [
'name' => 'MS PGothic',//MS P ゴシック
'size' => 11,//フォントサイズ11px
],
'alignment'=> [
'horizontal' => Alignment::HORIZONTAL_LEFT,//左詰め
'vertical' => Alignment::VERTICAL_TOP,//上詰め
'wrapText' => true,//文字を折り返す
]
];
}
}
コントローラーの方に書いているコードは以下の通り。
//ここまでに$companiesに配列を作る。
$export = new CompaniesExport($companies);//←$companiesをCompaniesExportに渡している。
return Excel::download($export, 'companies.xlsx', \Maatwebsite\Excel\Excel::XLSX);
*文字列の折り返しは、改行コードを使わずに、PHP_EOLを付け加える。
*CSVエクスポートを作ったものをEXCELに置き換えるので、私の場合は、全部配列をつくって出力する方式を使っています。
これで、およそ狙った通りのレイアウト出力する事が出来ると思います。
本家に、リファレンスがもっとたくさんあると嬉しいですが、無かったので、いろいろ調べてこうなりました。
参考になればとおもいます。
インストールの仕方や使い方の参考
本家
https://docs.laravel-excel.com/3.1/getting-started/
Laravel Excel 3.1 導入 + 使用例
https://qiita.com/y-oksaku/items/27fa2abc905527522262
Laravel Excelをマスターしよう
https://reffect.co.jp/laravel/laravel_excel_master
Laravel9でExcelファイルをインポート/エクスポートする方法【maatwebsite】
https://www.its-corp.co.jp/laravel9-excel-import-export/