Laravel excel无法正确处理日文标题

mgdq6dx1  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(119)

我正在使用laravel excel上传一个excel文件。该文件的顶部包含标题。但是,当标题是日语时,它没有被正确处理。
例如,如果我的文件类似于

+---------+--------+-------+
| bango   | name   | level |
+---------+--------+-------+
| nihongo | 日本語 | 8     |
+---------+--------+-------+
| test01  | test01 | 12    |
+---------+--------+-------+

它给出以下输出,

这是正确的输出。但是,当我把标题改为包括日语时,它就不能正常工作了。我的文件是这样的,

+---------+--------+--------+
| 番号    | 名前   | ラベル |
+---------+--------+--------+
| nihongo | 日本語 | 8      |
+---------+--------+--------+
| test01  | test01 | 12     |
+---------+--------+--------+

输出变为

我测试混合这和把一些标题在英语和日语。我的文件是这样的,

+---------+--------+--------+
| 番号    | name   | ラベル |
+---------+--------+--------+
| nihongo | 日本語 | 8      |
+---------+--------+--------+
| test01  | test01 | 12     |
+---------+--------+--------+

我的结果是

尽管结果正确给出了name值,但序列不正确。name值应在level之前,但实际上不是。
我的控制器功能是这样的,

public function post($id)
    {
        $array  = (new DeliveryImport)->toArray(request('file'));
        dd($array);
    }

我的DeliveryImport.php就像这样

class DeliveryImport implements ToModel, WithHeadingRow
{
    use Importable;
    public function model(array $row)
    {
    }
}

请注意,代码不工作,只有当有日本人的标题。如果有日本人在其他地方,那么它的工作没有问题。

izkcnapc

izkcnapc1#

我已经解决了这个问题。解决办法是在config/excel.php中更改。
在该文件中找到imports' => 'heading_row'
然后将formatterslug更改为none
在那之后它完美地工作了。

t40tm48m

t40tm48m2#

或者您也可以将这些放在函数之外

use Maatwebsite\Excel\Imports\HeadingRowFormatter;
HeadingRowFormatter::default('none');

相关问题