ヘッダーのカラム名を取得
エンコーディングの問題以前に、そもそもヘッダーの行を正常に取得できていなかった。
以下設定でformatterをnoneにすれば解決する。
config/excel.php
'imports' => [
'heading_row' => [
'formatter' => 'none',
],
],
クラス毎に設定する場合は以下。
Imports/TestImport.php
use Maatwebsite\Excel\Imports\HeadingRowFormatter;
HeadingRowFormatter::default('none');
class TestImport implements ToModel
{
}
シフトJISの文字化け
先程のconfig/excel.phpでも設定できるが、
クラスに設定する場合は、getCsvSettings()を追記する。
WithCustomeCsvSettingsをimplementsすることも忘れずに。
Imports/TestImport.php
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithCustomCsvSettings;
class TestImport implements ToModel, WithHeadingRow, WithCustomCsvSettings
{
public function model(array $row)
{
return new User([
'name' => $row['名前'],
'email' => $row['メールアドレス'],
]);
}
public function getCsvSettings(): array
{
return [
'input_encoding' => 'SHIFT-JIS'
];
}
}