您好,我正在使用Maatwerk Excel laravel包导出数据到XLSX和CSV。
在两个例子中,逗号是好的。
但现在我需要创建一个CSV,其中delimeter不是逗号,而是不同的东西(制表符或管道符号)。
我找不到设置位置。我尝试:
Config::set('Excel::csv.delimeter','|');
Excel::create('CSV Products', function($excel) use ($exports_arr) {
$excel->setTitle('Products');
$excel->setCreator('Me')->setCompany('My company');
$excel->setDescription('Products');
$excel->sheet('sheet1', function($sheet) use ($exports_arr) {
$sheet->fromArray($exports_arr, null, 'A1', false, false);
});
})->download('csv');
但是如果我查看config/Excel.php文件,注解表明这个delimeter仅供阅读。
是否有可能更改导出CSV文件的分隔符?
先谢了。
4条答案
按热度按时间vxqlmq5t1#
注解指出
excel.csv.delimiter
用于读取csv文件,但在Writers/LaravelExcelWriter.php
(第578行)中,CSV分隔符取自配置,默认设置为,
:$this->writer->setDelimiter(config('excel.csv.delimiter', ','));
您确定
Config::set
语句工作正常吗?尝试使用:
Config::set('excel.csv.delimeter','|');
并使用检查值
Config::get('excel.csv.delimeter');
更新:
如this答案中所述,服务提供程序在请求发生之前注册。在请求期间更新配置键不会影响Maatwerk/Excel先前读取的值。答案中给出了一个解决方案,即创建一个延迟提供程序。
z9zf31ra2#
我知道这有点过时,但我最近也遇到了同样的问题。
为了在导出多个CSV文件时设置自定义分隔符,您可以创建use Maatwebsite\Excel\Excel类的新示例,而不使用外观。
试试这个:
owfi6suc3#
关于这一问题的最新情况:如果您使用的是Laravel Excel 3,您可以在config/excel. php文件中设置它:
或者,如果要动态设置它:
x7rlezfr4#
来自文件:在此输入链接说明