Как превратить сырой XLSX в удобный отчёт: настроить шрифты, заливки, границы и числовые форматы, закрепить шапку и добавить фильтр. Разбираем стили FastExcelWriter на примере отчёта о продажах.
Потоковый экспорт через cursor() экономит память, но обращение к связям модели внутри выгрузки порождает N+1 — тысячи лишних запросов. Разбираем, почему cursor() не спасает со связями и как выгрузить их через lazy() без потери памяти.
Импорт большого Excel-файла роняет PHP по памяти? Разбираем, почему объектная модель книги обречена на OOM, и читаем XLSX на миллион строк с константной памятью — на XMLReader и генераторах FastExcelReader.
Даты превращаются в 44898, у артикулов пропадают ведущие нули, номера карт — в 8.98E+18. Это не баги, а то, как Excel хранит значения. Учимся правильно типизировать данные при экспорте в XLSX через FastExcelWriter.
В Word есть слияние: берёшь шаблон с полями и подставляешь данные. Для Excel такого «из коробки» будто бы нет — и разработчики начинают собирать документ ячейка за ячейкой в коде. На самом деле подстановка в готовый XLSX делается в две строки: разбираем плейсхолдеры, разницу fill/replace и типичные грабли.
Импорт Excel в модели Eloquent обычно превращается в цикл ручного разбора ячеек. Показываем, как withHeadings() и mapping() сводят его к нескольким строкам и как аккуратно привязать «чужие» колонки файла к атрибутам модели.
Экспорт отчёта в Excel валится с OOM на больших данных? Причина — объектная модель «вся книга в памяти». Пишем миллион строк в XLSX с константной памятью на чистом PHP: потоковая схема «строка → temp-файл → ZIP» FastExcelWriter.
Бухгалтер уже нарисовал бланк счёта в Excel — с логотипом, рамками, форматами и формулами. Не надо повторять это в коде: FastExcelTemplator берёт готовый XLSX как шаблон, подставляет данные в плейсхолдеры и размножает строки таблицы, сохраняя оформление.
Laravel Excel падает по памяти на большом экспорте не из-за вашего кода, а из-за архитектуры PhpSpreadsheet. Разбираем, почему чанки не спасают, и как потоковая выгрузка через cursor() держит память постоянной.
Вам нужен Excel в PHP, и первый же поиск выдаёт PhpSpreadsheet — универсальный, тяжёлый и не всегда подходящий. Разбираем, какие вообще бывают задачи с Excel (чтение, запись, шаблоны) и как понять, какая из них ваша, чтобы не тащить комбайн туда, где хватит отвёртки.