Экспорт файлов Excel с новыми строками в Laravel: методы и примеры кода

Экспорт данных в файлы Excel — обычное требование в веб-приложениях. Однако при работе с многострочным содержимым, таким как абзацы или поля адреса, сохранение символов новой строки (\n) становится критически важным. В этой статье мы рассмотрим различные методы экспорта файлов Excel с новыми строками с помощью Laravel, а также соответствующие примеры кода.

Метод 1: использование пакета Maatwebsite/Laravel-Excel
Пакет Maatwebsite/Laravel-Excel предоставляет удобный способ экспорта данных в файлы Excel в Laravel. Чтобы экспортировать новые строки, выполните следующие действия:

Шаг 1. Установите пакет через Composer:

composer require maatwebsite/excel

Шаг 2. Создайте класс экспорта:

php artisan make:export UsersExport --model=User

Шаг 3. Откройте класс UsersExport и определите метод map():

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithMapping;
class UsersExport implements FromCollection, WithMapping
{
    public function collection()
    {
        return User::all();
    }
    public function map($user): array
    {
        return [
            $user->name,
            str_replace("\n", "\r\n", $user->address),
        ];
    }
    public function headings(): array
    {
        return ['Name', 'Address'];
    }
}

Шаг 4. В контроллере используйте метод store()для загрузки файла Excel:

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
public function export()
{
    return Excel::download(new UsersExport, 'users.xlsx');
}

Метод 2: использование пакета Laravel Excel
Пакет Laravel Excel — еще один популярный выбор для экспорта файлов Excel в Laravel. Чтобы обработать новые строки, выполните следующие действия:

Шаг 1. Установите пакет через Composer:

composer require "laravel-excel:^3.0"

Шаг 2. Создайте класс экспорта:

php artisan make:export UsersExport --model=User

Шаг 3. Откройте класс UsersExport и определите методы collection()и map():

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithHeadings;
class UsersExport implements FromCollection, WithMapping, WithHeadings
{
    public function collection()
    {
        return User::all();
    }
    public function map($user): array
    {
        return [
            $user->name,
            str_replace("\n", "\r\n", $user->address),
        ];
    }
    public function headings(): array
    {
        return ['Name', 'Address'];
    }
}

Шаг 4. В контроллере используйте метод download()для загрузки файла Excel:

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
public function export()
{
    return Excel::download(new UsersExport, 'users.xlsx');
}

Экспортировать файлы Excel с новыми строками в Laravel можно с помощью таких пакетов, как Maatwebsite/Laravel-Excel или Laravel Excel. Эти пакеты предоставляют удобные методы и интерфейсы для управления процессом экспорта. Сопоставляя данные и заменяя символы новой строки, вы можете гарантировать, что новые строки будут правильно сохранены в экспортированном файле Excel. Выберите пакет, который лучше всего соответствует требованиям вашего проекта, и начните с легкостью экспортировать данные!

Не забудьте учитывать конкретные потребности вашего проекта и выбирать соответствующий пакет соответственно. Удачного экспорта!