Создание больших Листы Excel программно

Мы используем OpenPyxl для экспорта содержимого MySQL в Microsoft Excel в формате XSLX

https://bitbucket.org/ericgazoni/openpyxl/overview

Однако объем данных, с которыми мы имеем дело с большой. У нас нехватка памяти. Таблицы могут содержать до 400 столбцов в более чем 50000 строках. Даже файлы большие, они не такие большие, чтобы у Microsoft Excel или OpenOffice возникли проблемы с ними. Таблицы могут содержать до 400 столбцов в более чем 50000 строках. Даже файлы большие, они не такие большие, чтобы у Microsoft Excel или OpenOffice возникли проблемы с ними. Таблицы могут содержать до 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 drop-in, например, с исправлением обезьяны? (позже изменения могут быть внесены обратно в 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 /

7
задан Mike Pennington 11 December 2011 в 10:02
поделиться