Laravel 5.8使用Maatwebsite导出CSV时如何完全移除字段双引号
Laravel Maatwebsite导出CSV移除所有字段双引号解决方案
问题原因
你当前只声明了getCsvSettings方法,但没有实现对应的WithCustomCsvSettings接口,因此配置没有完全生效,才会出现仅部分字段双引号被移除的问题。
修复步骤
步骤1:引入并实现自定义CSV配置接口
修改你的导出类代码,完整示例如下:
namespace App\Exports; use App\WithdrawWallet; use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\WithHeadings; // 新增引入自定义CSV配置接口 use Maatwebsite\Excel\Concerns\WithCustomCsvSettings; // 类实现新增WithCustomCsvSettings接口 class ConfirmedExport implements FromCollection, WithHeadings, WithCustomCsvSettings { public function headings():array{ return [ // 你的表头配置 ]; } public function collection() { return collect(WithdrawWallet::getData()); } public function getCsvSettings(): array { return [ 'delimiter' => ',', // 明确分隔符为逗号 'enclosure' => '', // 包裹符设置为空,去掉双引号 'escape' => '', // 转义符也设置为空,避免多余转义 ]; } }
步骤2(可选):全局配置生效
如果你需要所有CSV导出都默认去掉双引号,可以直接修改全局配置:
- 先发布扩展包配置文件:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
- 打开生成的
config/excel.php文件,找到csv配置块,修改enclosure参数:
return [ // 其他配置省略 'csv' => [ 'delimiter' => ',', 'enclosure' => '', // 此处修改为空 'escape' => '', // 其余csv配置保持默认即可 ], ];
注意事项
如果你的字段内容中本身包含逗号、空格、换行符等CSV特殊字符,去掉双引号后会导致CSV解析错位,仅在确认所有导出字段无特殊字符时使用该方案。
内容的提问来源于stack exchange,提问作者Pouya Vaghefi
相关产品推荐
相关产品推荐

