【发布时间】:2021-04-26 12:30:17
【问题描述】:
我在 Laravel 中使用 Laravel Excel 导出 CSV 文件。 如何设置导出 csv 文件的编码。
我尝试了几种方法:
- 更改
excel.php中的配置
'use_bom' => false,
- 使用 mb_convert_encoding 将内容转换为导出前。
$exportData = mb_convert_encoding($exportData, "SJIS", "UTF-8");
$pblClassExport = new \App\Exports\PblClassExport($exportData, 'test.csv');
但它不起作用。 csv文件的编码根据文件内容自动改变:( 我希望得到你的帮助。 非常感谢!
.......................更新...................... ......
我解决了。
让我在这里分享我的解决方案。
Laravel Excel 默认不支持。
但是我们可以通过简单的方式做到这一点。
-
下载前获取csv内容:\Excel::raw
-
转换为另一种编码:mb_convert_encoding https://docs.laravel-excel.com/3.1/exports/collection.html#storing-raw-contents
-
下载 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);
【问题讨论】:
-
为什么需要设置?编码?
-
@KamleshPaul 感谢您的回复。我正在使用第三方服务,上传 csv 文件所需的服务编码为 SJIS 。
标签: laravel encoding laravel-excel