XLRD - читалка Excel для Python

Понадобилось по работе забивать данные из нескольких разноформатных файлов Excel в одну единообразную базу MySQL. Данных было много, вручную вбивать,- долго, да и ошибок можно наделать (ага, тот самый человеческий фактор). Естественным образом появилось желание автоматизировать этот ужос. Встроенный в MS Office VisualBasic показался некошерным по нескольким причинам: во-первых,- я его не очень хорошо знаю, а во-вторых,- не кроссплатформенно. Из других доступных языков под руками только Java и Python. Полез искать, что у нас есть в питоне для чтения Excel и нашёл чудесную совершенно библиотеку XLRD. Работает на любой платформе, где есть Python, легко читает всё что нужно. Небольшая проблема,- не читает формат xlsx (MS Office 2007), особо не вникал в чём проблема.

За запись Excel в Python отвечает парный пакет XLWT

Комментарии

  1. Разве файлы Excel нужно было под Linux'ом обрабатывать? Иначе к чему бы тут про кросс-платформенность... Или MySQL база - удалённая?

    Если только под Windows, достаточно встроенных средств: модуль win32com.client и COM-компонента Excel.Application (правда, нужен установленный Excel, но чаще всего он есть). При таком подходе сам Excel легко зажует .xlsx и всё в нужном виде выплюнет.

    Более того, в стандартном хелпе Питона (ActivePython) есть пример использования Excel таким макаром: Contents -> PyWin32 Documentation -> Python COM -> Overviews -> Quick Starts to Python and COM -> Quick Start to client-side COM.

    Правда, нужно откуда-то знать константы для разных типов диаграмм и прочей кастомизации (в основном, если графики генерить нужно). Но про это есть книжка на цитфоруме.

    ОтветитьУдалить
  2. Да, фалы под Linux'ом нужно обрабатывать. И база в самом общем случае,- вообще на другой машине. Даже более того,- не столько обрабатывать, сколько создавать файл надо. Да, вариант COM-компонентом Excel.Application гораздо более удобный при наличии выделенной машины с MicrosoftWindows и установленным Excel,- но у меня возможности использовать на сервере Windows нет, даже не знаю,- к сожалению или к счастью ;-)

    ОтветитьУдалить

Отправка комментария

Популярные сообщения