Как превратить сырой XLSX в удобный отчёт: настроить шрифты, заливки, границы и числовые форматы, закрепить шапку и добавить фильтр. Разбираем стили FastExcelWriter на примере отчёта о продажах.
«Excel скачался, но повреждён» — почти всегда лишние байты вокруг ZIP. Разбираем, как правильно отдавать XLSX в браузер: методы download()/output(), эталонные заголовки и рецепты для контроллеров Laravel и Symfony.
Импорт большого Excel-файла роняет PHP по памяти? Разбираем, почему объектная модель книги обречена на OOM, и читаем XLSX на миллион строк с константной памятью — на XMLReader и генераторах FastExcelReader.
Даты превращаются в 44898, у артикулов пропадают ведущие нули, номера карт — в 8.98E+18. Это не баги, а то, как Excel хранит значения. Учимся правильно типизировать данные при экспорте в XLSX через FastExcelWriter.
В Word есть слияние: берёшь шаблон с полями и подставляешь данные. Для Excel такого «из коробки» будто бы нет — и разработчики начинают собирать документ ячейка за ячейкой в коде. На самом деле подстановка в готовый XLSX делается в две строки: разбираем плейсхолдеры, разницу fill/replace и типичные грабли.
Экспорт отчёта в Excel валится с OOM на больших данных? Причина — объектная модель «вся книга в памяти». Пишем миллион строк в XLSX с константной памятью на чистом PHP: потоковая схема «строка → temp-файл → ZIP» FastExcelWriter.
Бухгалтер уже нарисовал бланк счёта в Excel — с логотипом, рамками, форматами и формулами. Не надо повторять это в коде: FastExcelTemplator берёт готовый XLSX как шаблон, подставляет данные в плейсхолдеры и размножает строки таблицы, сохраняя оформление.
Вам нужен Excel в PHP, и первый же поиск выдаёт PhpSpreadsheet — универсальный, тяжёлый и не всегда подходящий. Разбираем, какие вообще бывают задачи с Excel (чтение, запись, шаблоны) и как понять, какая из них ваша, чтобы не тащить комбайн туда, где хватит отвёртки.
Не успели дописать пост про 4.0, как вышли 4.1 и 4.2. Рассказываем, что нового: теперь Excel::open() сам определяет формат по сигнатуре файла и читает XLSX, XLS и CSV одной строкой — ветвление по расширению больше не нужно.
FastExcelReader 4 читает старый формат XLS (Excel 97–2003) предоставляя тот же набор методов, что и при работе с XLSX, — отдельная библиотека и развилка в коде больше не нужны. Метод withHeader() теперь принимает свои имена колонок, а чтение XLSX ускорилось примерно в полтора раза. Разбираем главные новинки 4-й версии