Customization Excel Laravel 如何设置CSV EXPORT分隔符?
Maatwerk Excel Laravel how to set CSV EXPORT delimeter?
您好,我正在使用 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 文件,评论表明此分隔符仅用于阅读。
是否可以更改导出 CSV 文件的分隔符?
提前致谢。
评论指出excel.csv.delimiter
用于读出csv文件,但在Writers/LaravelExcelWriter.php
(line 578)中,CSV分隔符取自配置,并设置为,
默认:
$this->writer->setDelimiter(config('excel.csv.delimiter', ','));
您确定 Config::set
语句正常工作吗?
尝试使用:
Config::set('excel.csv.delimeter','|');
并使用
检查值
Config::get('excel.csv.delimeter');
更新:
如 this 回答中所述,服务提供商在请求发生之前注册。在请求期间更新配置键不会影响 Maatwerk/Excel 之前读取的值。通过创建延迟提供程序,答案中给出了解决方案。
我知道这有点过时了,但我最近遇到了同样的问题。
为了在导出多个 CSV 文件时设置自定义分隔符,您可以在不使用外观的情况下创建使用 Maatwebsite\Excel\Excel class 的新实例。
试试这个:
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( ... );
关于这个问题的更新:如果你正在使用Laravel Excel 3,你可以在config/excel.php文件中设置它:
return [
'exports' => [
'csv' => [
'delimiter' => '|',
]
]
]
或者如果你想动态设置它:
\Config::set('excel.exports.csv.delimiter', '|');
您好,我正在使用 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 文件,评论表明此分隔符仅用于阅读。
是否可以更改导出 CSV 文件的分隔符?
提前致谢。
评论指出excel.csv.delimiter
用于读出csv文件,但在Writers/LaravelExcelWriter.php
(line 578)中,CSV分隔符取自配置,并设置为,
默认:
$this->writer->setDelimiter(config('excel.csv.delimiter', ','));
您确定 Config::set
语句正常工作吗?
尝试使用:
Config::set('excel.csv.delimeter','|');
并使用
检查值Config::get('excel.csv.delimeter');
更新:
如 this 回答中所述,服务提供商在请求发生之前注册。在请求期间更新配置键不会影响 Maatwerk/Excel 之前读取的值。通过创建延迟提供程序,答案中给出了解决方案。
我知道这有点过时了,但我最近遇到了同样的问题。
为了在导出多个 CSV 文件时设置自定义分隔符,您可以在不使用外观的情况下创建使用 Maatwebsite\Excel\Excel class 的新实例。
试试这个:
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( ... );
关于这个问题的更新:如果你正在使用Laravel Excel 3,你可以在config/excel.php文件中设置它:
return [
'exports' => [
'csv' => [
'delimiter' => '|',
]
]
]
或者如果你想动态设置它:
\Config::set('excel.exports.csv.delimiter', '|');