【问题标题】:How to export csv file with shift-jis encoding in laravel?如何在 laravel 中使用 shift-jis 编码导出 csv 文件?
【发布时间】:2020-02-19 02:31:09
【问题描述】:

我正在使用laravel-excel 导出 csv 文件。导出,代码如下,

 return Excel::download(new Export(results,$header), "test.csv");

Export.php 文件是这样的,

namespace App\AllClass;

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithHeadings;

class Export implements FromCollection,WithHeadings
{
    private $myArray;
    private $header;

    public function __construct($myArray,$header){
        $this->myArray = $myArray;
        $this->header = $header;
    }

    public function collection()
    {
        $data = mb_convert_encoding($this->myArray,"SJIS", "UTF-8");
        // dump($data);
        return collect($data);
    }


    public function headings(): array
    {
        $header = mb_convert_encoding($this->header,"SJIS", "UTF-8");
        // dump($header);
        return $header;
    }
}

如您所见,我在创建 Excel 之前转换了数据。无需转换,我就可以完美地以 UTF-8 格式导出。但是转换为 shift-jis 后,它正在删除所有日文字符。但是,如果我在返回之前转储标题,它会向我显示乱码数据;不是像 csv 文件那样的空字符串。

【问题讨论】:

  • 你解决了吗?我也面临同样的问题。
  • 没有。这是一个古老的项目。我不记得细节,但后来我们决定使用 PhpSpreadsheet。比 laravel excel 好。

标签: laravel csv laravel-5.7 laravel-excel


【解决方案1】:

我解决了。
让我在这里分享我的解决方案。
Laravel Excel 默认不支持。 但我们可以通过简单的方式做到这一点。

  1. 下载前获取csv内容:\Excel::raw

  2. 转换为另一种编码:mb_convert_encoding https://docs.laravel-excel.com/3.1/exports/collection.html#storing-raw-contents

  3. 下载 csv。

    $exportedObject= new \App\Exports\ClassExport($exportDataArray, $fileName);
    $csvContent = \Excel::raw($exportedObject, $exportedObject->writerType);

    $csvContent = mb_convert_encoding($csvContent, 'SJIS', 'auto');

    // 就我而言,我将 csv 上传到 S3。 $storageInstance = \Storage::disk('s3_import_csvs');
    $putFileOnStorage = $storageInstance->put($fileName, $csvContent);

【讨论】:

    【解决方案2】:

    在 config/excel.php 中,您应该更改 CSV 设置

    'use_bom'                => true,
    

    日语很好用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2017-03-12
      • 1970-01-01
      相关资源
      最近更新 更多