Maatwerk Excel Laravel如何设置CSV EXPORT分隔符?

时间:2017-11-09 12:05:38

标签: php laravel csv laravel-5 maatwebsite-excel

您好我正在使用Maatwerk Excel laravel软件包将数据导出到XLSX和CSV。

在2个实例中,逗号很好。

但是现在我需要制作一个CSV,其中的分隔符不是逗号,而是不同的东西(制表符或管道符号)。

我找不到在哪里设置它。 我试过了:

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 for EXPORTING CSV文件吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

评论指出excel.csv.delimiter用于读取csv文件,但在Writers/LaravelExcelWriter.phpline 578)中,CSV分隔符取自配置,并设置为{{1默认情况下:

,

您确定$this->writer->setDelimiter(config('excel.csv.delimiter', ','));声明是否正常?

尝试使用:

Config::set

并使用

检查值

Config::set('excel.csv.delimeter','|');

更新:

正如this回答中所述,服务提供商在请求发生之前已注册。在请求期间更新配置密钥不会影响Maatwerk / Excel先前读取的值。通过创建延迟提供程序,在答案中给出了解决方案。

答案 1 :(得分:1)

我知道这有点过时了,但是最近我遇到了同样的问题。

为了在导出多个CSV文件时设置自定义定界符,可以在不使用外观的情况下创建Use Maatwebsite \ Excel \ Excel类的新实例。

尝试一下:

use Maatwebsite\Excel\Excel;
use Maatwebsite\Excel\Writer; 
use Maatwebsite\Excel\QueuedWriter; 
use Maatwebsite\Excel\Reader; 

...

$reader = new Reader(app()->make('filesystem'));    
$writer = new Writer; 
$queued_writer = new QueuedWriter($writer); 

$writer->setDelimiter('|');

$excel = new Excel($writer, $queued_writer, $reader, app()->make('filesystem'));
$excel->create( ... );

答案 2 :(得分:0)

有关此问题的更新:如果您使用的是Laravel Excel 3,则可以在config / excel.php文件中进行设置:

return [
   'exports' => [
        'csv' => [
            'delimiter' => '|',
        ]
   ]
]

或者如果您想动态设置它:

\Config::set('excel.exports.csv.delimiter', '|');