Php Maatwerk Excel Laravel如何设置CSV导出delimeter?

Php Maatwerk Excel Laravel如何设置CSV导出delimeter?,php,laravel,csv,laravel-5,maatwebsite-excel,Php,Laravel,Csv,Laravel 5,Maatwebsite Excel,嗨,我正在使用Maatwerk Excel laravel软件包将数据导出到XLSX和CSV 在两种情况下,逗号是好的 但现在我需要制作一个CSV,其中delimeter不是逗号,而是不同的东西(选项卡或管道符号) 我找不到该放在哪里。 我试过: 但是如果我查看config/Excel.php文件,注释表明此delimeter仅用于读取 甚至可以更改导出CSV文件的Delimeter吗 提前感谢。注释说明excel.csv.delimiter用于读取csv文件,但在Writers/Laravel

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

在两种情况下,逗号是好的

但现在我需要制作一个CSV,其中delimeter不是逗号,而是不同的东西(选项卡或管道符号)

我找不到该放在哪里。 我试过:

但是如果我查看config/Excel.php文件,注释表明此delimeter仅用于读取

甚至可以更改导出CSV文件的Delimeter吗


提前感谢。

注释说明
excel.csv.delimiter
用于读取csv文件,但在
Writers/LaravelExcelWriter.php
()中,csv分隔符取自配置,默认设置为

$this->writer->setDelimiter(配置('excel.csv.delimiter',',')

您确定
Config::set
语句工作正常吗

尝试使用:

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

并用

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

更新:


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

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

为了在导出多个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( ... );

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

return [
   'exports' => [
        'csv' => [
            'delimiter' => '|',
        ]
   ]
]
或者,如果要动态设置它:

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

嘿,当我在/config/Excel.php中更改Delimeter时,它会工作!但是它不适用于
Config::set
我用
Config::get
检查了它,并返回了我之前设置的正确符号。但是Excel::create使用默认的逗号…您是对的,它不会工作,因为服务提供商已经注册,配置值已经读取。查看有关此问题的更多信息
\Config::set('excel.exports.csv.delimiter', '|');