Мы используем OpenPyxl для экспорта содержимого MySQL в Microsoft Excel в формате XSLX
https://bitbucket.org/ericgazoni/openpyxl/overview
Однако объем данных, с которыми мы имеем дело, велик.Мы бежим к нехватке памяти.Таблицы могут содержать до 400 столбцов в 50000+ строк.Даже файлы большие, они не такие большие, что у Microsoft Excel или OpenOffice могут возникнуть проблемы с ними.Мы предполагаем, что наши проблемы в основном связаны с тем, что Python хранит структуру XML DOM в памяти недостаточно эффективным образом.
РЕДАКТИРОВАТЬ: Эрик, автор OpenPyxl, указал, что есть возможность заставить OpenPyxl писатьс фиксированным использованием памяти.Однако это не решило нашу проблему полностью, поскольку у нас все еще есть проблемы с сырой скоростью и чем-то еще, занимающим слишком много памяти в Python.
Теперь мы ищем более эффективные способы создания файлов Excel.С Python желательно, но если мы не можем найти хорошее решение, мы можем захотеть посмотреть и другие языки программирования.
Опции, не в произвольном порядке, включают
1) Использование OpenOffice и PyUnoи надеемся, что их структуры памяти более эффективны, чем с OpenPyxl, а мост вызовов TCP / IP достаточно эффективен
2) Openpyxl использует xml.etree.Будет ли Python lxml (собственное расширение libxml2) более эффективным с XML-структурами памяти и возможно ли заменить xml.etree напрямую с помощью lxml, например, с помощью monkey-patching?(позже изменения могут быть внесены обратно в Openpyxl, если есть явное преимущество)
3) Экспорт из MySQL в CSV и последующая обработка файлов CSV непосредственно в XSLX с использованием Python и итерации файлов
4) Используйте другие языки программирования и библиотеки (Java)
Указатели:
http://dev.lethain.com/handling-very-large-csv-and-xml-files-in-python/
http://enginoz.wordpress.com/2010/03/31/writing-xlsx-with-java/