Как программно импортировать csv в excel и использовать форматирование excel?

У меня есть очень большой (> 2 миллиона строк) CSV-файл, который создается и просматривается во внутренней веб-службе. Проблема в том, что когда пользователи этой системы хотят экспортировать этот csv для выполнения пользовательских запросов, они открывают эти файлы в excel. Excel форматирует числа как можно лучше, но есть некоторые запросы на получение данных в формате xlsx с фильтрами и еще чем-то.

Вопрос сводится к следующему: используя python2.7, как я могу прочитать большой файл csv (> 2 миллиона строк) в excel (или несколько файлов excel) и контролировать форматирование? (даты, числа, автофильтры и т. д.)

Я открыт для Python и внутренних решений Excel.


person Muttonchop    schedule 17.09.2014    source источник
comment
Вы можете использовать openpyxl, но его возможности форматирования ограничены. Другой вариант — использовать powershell, который, как мне кажется, имеет больше возможностей форматирования, чем openpyxl   -  person David    schedule 17.09.2014
comment
другой вариант - использовать расширения python win32 и использовать COM-интерфейс excel. Хитрость заключается в том, чтобы скопировать существующие сценарии VB. Но на самом деле это, вероятно, проще сделать в VB или C#.   -  person tdelaney    schedule 17.09.2014
comment
Я никогда не работал с powershell, VB или C#. Прямо сейчас xlsxWriter работает очень плохо и не может справиться с рабочей нагрузкой, которую я ему даю (даже при копировании этой строки из csv в xlsx).   -  person Muttonchop    schedule 17.09.2014
comment
XlsxWriter может обрабатывать все эти функции, форматирование и автофильтры, но 2 миллиона строк — это много данных, а в Excel есть ограничение примерно в 1 миллион строк на лист. Обязательно включите режим constant_memory в XlsxWriter, но даже в этом случае, вероятно, потребуется около 15 секунд на миллион ячеек (примерная цифра).   -  person jmcnamara    schedule 17.09.2014
comment
В итоге я получил необходимую мне производительность, используя многопроцессорную библиотеку для нормализации данных из csv в одном процессе, а затем передал их другому процессу для форматирования в Excel. Когда у меня будет больше времени, я опубликую минимальный пример решения с некоторой статистикой производительности.   -  person Muttonchop    schedule 18.09.2014


Ответы (1)


Без дополнительной информации о типах данных в CSV или вашей точной проблеме с правильной обработкой EXCEL этих типов данных трудно дать вам точный ответ.

Тем не менее, рекомендуется просмотреть этот модуль (https://xlsxwriter.readthedocs.org/), который можно использовать в Python для создания файлов xlsx. Я не использовал его, но, кажется, у него больше возможностей, чем вам нужно.

Особенно, если вам нужно разделить несколько файлов или книг. И похоже, что вы можете предварительно создать фильтры и иметь полный контроль над форматированием.

person cybergoof    schedule 17.09.2014