Как удалить двойные кавычки из экспортированного csv-файла

#php #laravel #laravel-5.8 #maatwebsite-excel #laravel-excel

Вопрос:

Я использую Laravel 5.8 и добавил пакет Maatwebsite для экспорта CSV-файлов из таблицы базы данных.

А вот мой экспортированный класс:

 class ConfirmedExport implements FromCollection, WithHeadings {  public function headings():array{  return [    ];  }   public function collection()  {  return collect(WithdrawWallet::getData());  } }  

И результат выглядит так:

 "123456789","2100","Desc","lname","fname"  

Но мне нужно удалить двойные кавычки ( " " ) из слов, поэтому ожидаемый результат выглядит так:

 123456789,2100,Desc,lname,fname  

Так как же это сделать?


ОБНОВЛЕНИЕ № 1:

Я только что попробовал этот код для класса экспорта:

 namespace AppExports;  use AppWithdrawWallet; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcelConcernsWithHeadings;  class ConfirmedExport implements FromCollection, WithHeadings {  public function headings():array{  return [    ];  }   public function collection()  {  return collect(WithdrawWallet::getData());  }    public function getCsvSettings(): array  {  return [  'enclosure' =gt; ''  ];  } }  

И он успешно удаляет " " из последнего элемента (который является: 123456789 ), но все равно показывает " " для других!

введите описание изображения здесь

Комментарии:

1. str_replace('"','',$csvstr) ?

2. @ProfessorAbronsius Я только что добавил свой метод контроллера с str_replace('"','',$csvstr) помощью, но все еще не работает и показывает двойные кавычки в загруженном файле

3. Я использовал переменную $csvstr для представления содержимого файла, в то время как здесь вы использовали ее для имени файла

4. @ProfessorAbronsius Итак, как правильно использовать его для содержимого файла ?

5. Почему вам «нужно» именно убрать кавычки? Они вполне допустимы в файле CSV — и иногда необходимы, например, если заключенное в них значение содержит запятую.

Ответ №1:

@nagidi после публикации конфигурации вы можете изменить это в настройках.

  1. Выполните следующую команду:
     php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider" --tag=config  
  2. Удалить " (двойная кавычка) из «приложения» в config/excel.php
     'exports' =gt; [  'csv' =gt; [  'enclosure' =gt; '', // was '"'  // other settings  ],  ],  

Теперь ваши значения экспорта csv больше не содержат " вложения.

Если вы хотите изменить этот параметр для каждого экспорта, вы можете реализовать WithCustomCsvSettings проблему и добавить getCsvSettings метод в свой ConfirmedExport класс:

 use MaatwebsiteExcelConcernsWithCustomCsvSettings;  class ConfirmedExport implements WithCustomCsvSettings {  // other code   public function getCsvSettings(): array  {  return [  'enclosure' =gt; ''  ];  } }  

Комментарии:

1. Спасибо тебе, приятель, но я использовал этот экспорт CSV и для других файлов, и они действительно нуждаются в enclosure '"' этом .

2. Есть ли какой-либо способ сделать его легитимным, поэтому, если запрос от ConfirmedExport класса, enclosure он не понадобится, иначе ему придется использовать enclosure ?

3. @nagidi Я обновил свой ответ, это то, что вы ищете 🙂

4. @nagidi это решило вашу проблему?

5. Я только что попробовал то, что вы сказали, и это успешно удаляет " " из последнего элемента (который является: 123456789 ), но все равно показывает " " для других!