Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maatwerk Excel Laravel how to set CSV EXPORT delimeter?

Hi i'm using Maatwerk Excel laravel package to export data to XLSX and CSV.

In 2 instances a comma is good.

But now i need to make a CSV where the delimeter is not a comma but something different (a tab or pipe symbol).

I cannot find where to set this. I tried:

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');

But if i look in the config/Excel.php file the comments suggest that this delimeter is only for reading.

Is it even possible to change the Delimeter for EXPORTING CSV files?

Thanks in advance.

like image 231
Rubberduck1337106092 Avatar asked Dec 12 '25 07:12

Rubberduck1337106092


1 Answers

The comment states that excel.csv.delimiter is used for reading out a csv file, but in Writers/LaravelExcelWriter.php (line 578) the CSV delimiter is taken from the config, and set as , by default:

$this->writer->setDelimiter(config('excel.csv.delimiter', ','));

Are you sure the Config::set statement works properly?

Try to use:

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

and check the value with

Config::get('excel.csv.delimeter');

UPDATE:

As mentioned in this answer, the service provider is registered before the request takes place. Updating the config key during the request won't affect the value that is read earlier by Maatwerk/Excel. A solution is given in the answer, by creating a deferred provider.

like image 189
piscator Avatar answered Dec 14 '25 20:12

piscator