#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 после публикации конфигурации вы можете изменить это в настройках.
- Выполните следующую команду:
php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider" --tag=config
- Удалить
"
(двойная кавычка) из «приложения» в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
), но все равно показывает" "
для других!