@denis6064
Fullstack web developer

Как экспортировать большие данные в excel?

Добрый день. Может кто-нибудь сталкивался с экспортом большого количества данных (более 100к) в excel (xlsx формат). Подскажите как можно реализовать подобное? Данные берутся из базы данных MySQL. Сама система, которая инициирует экспорт написана на php.
  • Вопрос задан
  • 1737 просмотров
Пригласить эксперта
Ответы на вопрос 8
@Barmunk
Есть специальный пакет для экспорта большого объема, можете попробовать его.

https://github.com/box/spout
Spout is a PHP library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way. Contrary to other file readers or writers, it is capable of processing very large files while keeping the memory usage really low (less than 3MB).
Ответ написан
Комментировать
mashletov
@mashletov
Math.random()
Не слушай советчиков с PHPExcel. Он уже при 5-10к строк начнет потреблять 100+ мб оперативы.
Кандидат от народа: box/spout. Пишет в файл на лету. Минус: почти полное отсутствие форматирования. Не умеет делать ни ширину столбцов, ни выравнивание по краю... Только шрифт / бордеры.
Ответ написан
Комментировать
Jump
@Jump
Системный администратор со стажем.
В excel подается обычный текст, никакие формулы внутри не используются

Так а зачем на пхп пытаться всунуть данные именно в XLSX ?
Не проще ли просто выгрузить их из БД и сохранить в банальный CSV, с которым EXCEL прекрасно взаимодействует.
Ответ написан
@konst74
Чисто из опыта работы в Excel, при объемах в сотни тысяч строк и более-менее сложных расчетах он начинает сильно тупить и пересчитывать листы по 30 секунд. Я бы сто раз подумал как это потом использовать ) Может сливать уже хоть как-то агрегированные данные
Ответ написан
Или использовать библиотеку PHPExcel, для генерации excel файла
Ответ написан
Комментировать
@denis6064 Автор вопроса
Fullstack web developer
А может есть более простой вариант? наподобие ETL (он на данный момент и используется,однако такое количество строк записать в файл не под силу)
Ответ написан
Комментировать
KEugene
@KEugene
Просто на всякий случай добавлю, что современная версия Excel прекрасно может брать данные прямо из MySQL. Может, ну его, "промежуточные звенья"?...
Ответ написан
sni10
@sni10
FS Dev
https://github.com/sni10/importHelper

Либу подключить можно любую для работы с телом файла хоть box/spout , хоть PHPExcel
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы