Почему я написал семейство библиотек FastExcelPhp и кому она реально нужна

aVadim 06.02.2026 19:03

Если вы хоть раз генерировали Excel-файлы в PHP, вы почти наверняка использовали PhpSpreadsheet. И почти наверняка в какой-то момент столкнулись с одной из проблем:

  • файл на 200–300 тысяч строк внезапно «съедает» гигабайт памяти
  • генерация Excel падает в очереди
  • скрипт стабильно утыкается в memory_limit
  • время генерации отчёта измеряется минутами
  • Docker-контейнер умирает без объяснений

В какой-то момент становится понятно: проблема не в коде отчёта. Проблема — в подходе.

PhpSpreadsheet — хороший инструмент, но не для всех задач

Сразу важное уточнение: PhpSpreadsheet — отличная библиотека, но у неё есть фундаментальное ограничение: она строит объектную модель книги целиком в памяти.

Упрощённо это выглядит так:

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

foreach ($rows as $row) {
    $sheet->fromArray($row);
}

Каждая ячейка — объект, каждый стиль — объект, каждая строка — объект. Любая сущность — от шрифта до диаграммы, от формата ячейки до настроек страниц, — все это объекты.

При 10 000 строк это ещё терпимо. При 100 000 — уже не очень. При 500 000 — боль и мука. А при миллионе — гарантированный провал.

Ключевая мысль: Excel ≠ UI, Excel = формат

Но зачем держать в памяти всю Excel-книгу? Ведь XLSX — это ZIP с XML-файлами.

То есть:

  • строки можно писать последовательно
  • стили можно переиспользовать
  • нет необходимости весь Excel-файл собирать в памяти.

Философия FastExcelPhp

FastExcel — это не «ещё одна обёртка над Excel». Это набор библиотек, построенных вокруг одной идеи: Писать и читать XLSX так, как он реально устроен.

Основные принципы:

  • минимальное потребление памяти
  • потоковая запись и чтение
  • контроль над стилями и XML
  • отсутствие лишних абстракций
  • предсказуемость

Библиотеки FastExcelPhp не пытаются эмулировать Excel, они работают с форматом напрямую.

Что входит в семейство библиотек FastExcelPhp

FastExcelWriter

Для генерации XLSX-файлов:

  • потоковая запись строк
  • повторное использование стилей
  • любые графики и диаграммы, поддерживаемые Excel
  • формулы, условное форматирование, настройки печати
  • запись десятков и сотен тысяч, и даже миллионов строк без переполнения памяти

https://github.com/aVadim483/fast-excel-writer

FastExcelReader

Для чтения Excel:

  • потоковый парсинг
  • без загрузки всего файла в память
  • идеально для импорта больших файлов

https://github.com/aVadim483/fast-excel-reader

FastExcelTemplator

Когда Excel — это шаблон:

  • плейсхолдеры
  • циклы
  • работа с готовым дизайном от аналитиков и бухгалтеров

https://github.com/aVadim483/fast-excel-templator

FastExcelLaravel

Интеграция с Laravel:

  • контейнер
  • фасады
  • импорт и экспорт моделей и коллекций
  • удобная конфигурация

https://github.com/aVadim483/fast-excel-laravel

Каждая библиотека решает один комплекс задач, но делает это максимально эффективно.

Для кого FastExcelPhp — маст-хев

Библиотеки FastExcelPhp особенно хорошо подходzт, если вы:

  • делаете SaaS с экспортами
  • генерируете отчёты по расписанию
  • работаете с маркетплейсами
  • импортируете большие Excel-файлы
  • используете очереди
  • ограничены по памяти (Docker, serverless, shared hosting)

Если же вам нужно «пару красивых табличек» — PhpSpreadsheet по-прежнему отличный выбор.

Комментарии (0)