Что такое PhpSpreadsheet и зачем он нужен?
PhpSpreadsheet — это мощная PHP-библиотека для работы с электронными таблицами. Она позволяет читать, записывать и редактировать файлы форматов CSV, XLS, XLSX, ODS и других. В отличие от встроенных функций PHP (например, fgetcsv), PhpSpreadsheet предлагает объектно-ориентированный подход, автоматическую обработку кодировок, поддержку стилей, формул и больших объёмов данных. Библиотека идеально подходит для импорта/экспорта данных из веб-форм, генерации отчётов, миграции между базами данных и интеграции с Excel/Google Sheets.
Установка
Установка производится через Composer:
composer require phpoffice/phpspreadsheetПосле установки подключите автозагрузку:
require 'vendor/autoload.php';Основные функции
- Чтение CSV — загрузка файла в объект Spreadsheet с автоматическим определением разделителя.
- Запись CSV — создание и сохранение файла с настройкой разделителя, кавычек и BOM.
- Работа с листами — создание, удаление, переименование и копирование листов.
- Форматирование — стили ячеек (шрифты, цвета, границы, выравнивание).
- Формулы и функции — поддержка SUM, AVERAGE, IF и других.
- Обработка больших данных — потоковая запись через Xlsx Writer для снижения потребления памяти.
Пример кода: чтение и запись CSV
Чтение CSV-файла и вывод данных:
use PhpOffice\PhpSpreadsheet\IOFactory;
$inputFileName = './data.csv';
$spreadsheet = IOFactory::load($inputFileName);
$worksheet = $spreadsheet->getActiveSheet();
$data = $worksheet->toArray();
foreach ($data as $row) {
echo implode(', ', $row) . "\n";
}Запись данных в CSV:
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Имя');
$sheet->setCellValue('B1', 'Email');
$sheet->setCellValue('A2', 'Иван');
$sheet->setCellValue('B2', 'ivan@example.com');
$writer = new Csv($spreadsheet);
$writer->setDelimiter(';');
$writer->setEnclosure('"');
$writer->save('./output.csv');Когда использовать
PhpSpreadsheet рекомендуется в следующих случаях:
- Необходима поддержка нескольких форматов (CSV, XLSX, ODS) в одном проекте.
- Требуется точное форматирование (цвета, шрифты, объединение ячеек).
- Нужно работать с формулами или большими датасетами (более 10 000 строк).
- Вы предпочитаете ООП-стиль и не хотите писать низкоуровневые парсеры.
Для простых задач (например, чтение одного CSV с известной структурой) можно обойтись встроенными функциями PHP. Но если проект растёт и требует гибкости — PhpSpreadsheet станет незаменимым инструментом.
Также в библиотеке
Стандартная библиотека JavaScript (Node.js): полный обзор
Конфигурация приложений Node.js: лучшие инструменты и подходы
Планировщик задач на TypeScript: подробное руководство по библиотеке node-schedule