Я потратил много времени, работая над этой проблемой и проблемой потребления памяти для больших наборов данных.Все библиотеки PHP, которые я обнаружил, хранят все ячейки в памяти, что не жизнеспособно ни для чего, кроме небольшого листа.
В итоге я написал набор утилит Java с использованием Apache POI и упаковал их с PHP / Java Bridge , чтобы я мог вызывать их из PHP.Это позволит вам создать новую книгу на основе шаблона, сохраняя макросы в целости и сохранности.Вы также можете использовать потоковый API POI, чтобы обрабатывать массивные наборы данных без сбоев на сервере.
Если у вас есть Java-чоп, я настоятельно рекомендую пойти по этому пути, это действительно единственный способ сделать операцию на мозге в Excelфайлы из PHP.
Если у вас есть какие-либо вопросы о том, как это сделать, или вам нужен пример кода, я буду рад помочь.