Как создать файл Excel с PHP в Symfony 4

Создание файлов Excel при разработке веб-приложений является обязательным в настоящее время, и вы, как разработчик, должны знать о новых методах, доступных на предпочитаемом вами языке, для его создания. С 2015 года была выпущена последняя версия PHPExcel 1.8.1, и все получили сообщение в официальном репозитории, что проект больше не будет обслуживаться и больше не должен использоваться.

Но не волнуйтесь, это не значит, что нет возможности генерировать больше файлов Excel с использованием библиотеки. Вместо этого была также опубликована новая версия с новым именем, а именно библиотека PHPSpreadsheet, того же пакета PHPOffice. Эта библиотека, PhpSpreadsheet, представляет собой библиотеку, написанную на чистом PHP и предназначенную для предоставления набора классов, которые позволяют вам читать и писать в различные форматы файлов электронных таблиц, такие как Excel и LibreOffice Calc. Эта библиотека предлагает поддержку для:

Формат
чтение
Пишу
Открытый формат документа / OASIS (.ods)
Office Open XML (.xlsx) Excel 2007 и выше
BIFF 8 (.xls) Excel 97 и выше
BIFF 5 (.xls) Excel 95
SpreadsheetML (.xml) Excel 2003
Gnumeric
HTML
SYLK
CSV
PDF (используя библиотеки TCPDF, Dompdf или mPDF, которые необходимо установить отдельно)

Как человек, который использует все в своей последней версии, мы не будем учить вас, как создавать файлы Excel со старой библиотекой, вместо этого мы будем использовать новую библиотеку. В этой статье мы покажем вам, как установить библиотеку для создания файлов Excel с PHP в вашем проекте на основе Symfony 4.

1. Установите таблицу PHPS

Рекомендуемый способ установить PHPExcel наследник PHPSpreadsheet — с помощью composer. Откройте терминал в корневом каталоге вашего проекта Symfony 4 и выполните следующую команду:

composer require phpoffice/phpspreadsheet

Это добавит phpoffice / phpspreadsheet пакет как зависимость в вашем проекте Symfony 4 и установит его. Для получения дополнительной информации о методах, больше примеров, которые не знают о Symfony 4, но о самом Excel, пожалуйста, посетите официальный репозиторий на Github PHPSpreadsheet здесь или же официальная документация здесь.

2. Создайте файлы Excel, выполнив

Обычно, как разработчик, вы учитесь на практике, а это значит, писать и запускать некоторый код! Мы покажем вам несколько традиционных примеров, которые вам часто понадобятся. Это случаи создания файла Excel на диске (сохранение файла Excel в пути) и потокового ответа (файл встроенного расположения):

А. Запись файла Excel в локальный каталог

Если вы хотите создать файл на диске сервера, вы можете использовать традиционный метод сохранения библиотеки, которая записывает данные непосредственно на диск. Просто укажите абсолютный путь к каталогу, в котором вы хотите его сохранить, и имя файла (убедитесь, что каталог существует и у вас есть права на запись в данный каталог):

getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$sheet->setTitle("My First Worksheet");
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// In this case, we want to write the file in the public directory
$publicDirectory = $this->get('kernel')->getProjectDir() . '/public';
// e.g /var/www/project/public/my_first_excel_symfony4.xlsx
$excelFilepath =  $publicDirectory . '/my_first_excel_symfony4.xlsx';
// Create the file
$writer->save($excelFilepath);
// Return a text response to the browser saying that the excel was succesfully created
return new Response("Excel generated succesfully");
}
}

Б. Сгенерируйте ответ файла Excel (вложение)

По умолчанию при работе с PHP логика ответа сильно отличается в зависимости от используемой платформы или логики, которую вы пишете самостоятельно, поэтому библиотека позволяет выполнять запись только в конкретный каталог. Однако это бесполезно, когда вы генерируете файлы Excel на лету, потому что вам нужно будет заботиться о файлах, создавать их и удалять их.

Если вы следуете упомянутой логике, создание файла Excel может быть головной болью, поэтому самый простой способ сделать это — создать временный файл в вашей системе с помощью PHP, записать в него содержимое Excel и затем сгенерировать загрузку файла. файл с произвольным именем (временный файл будет удален системой через некоторое время). Чтобы вернуть файл как вложение, мы будем использовать помощник по файлам базового контроллера Symfony. Этот класс включает несколько вспомогательных методов для общих задач контроллера и обеспечивает прямой доступ к контейнеру службы. Вспомогательный метод, который нам нужен, называется file упростить обслуживание двоичных файлов. Самый простой способ использовать помощник file () — передать путь к файлу для загрузки. Браузер принудительно загрузит этот файл и присвоит ему то же имя, что и исходный файл:

getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$sheet->setTitle("My First Worksheet");
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'my_first_excel_symfony4.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
}

Обратите внимание, что сгенерированный файл Excel очень прост, мы только что записали в одну ячейку, однако в статье рассказывается, как его сгенерировать, сохранить и загрузить с помощью контроллера symfony 4. Для получения дополнительной документации о самой библиотеке PHPSpreadsheet, не забудьте посетить их документацию.

Ссылка на основную публикацию
Adblock
detector