Про то, как я Excel с питоном подружилАвтор:
Степа ИльинБредовая идея.Есть миллионы людей, которые бесхитростно работают в Excel с самыми обычными электронными таблицами. Есть очень редкие гики, которые используют максимум возможностей встроенного VBA-языка, чтобы, к примеру, обойти ограничение на запуск менеджера задач, реализовав свой собственный. Я отношусь к первому типу
. Я сильно не люблю составлять отчеты. Придумать более унылое занятие невозможно: взять данные оттуда, вставить в таблицу, взять данные из другого места и опять вставить в таблицу. После третьего такого отчета я решил это дело автоматизировать. Задача казалась вполне земной, если бы не одно - иметь дело со встроенным VBA совершенно не хотелось. К тому же нужно было обрабатывать сложные форматы файлов, а писать с нуля парсер нисколько не привлекало. С документом надо было работать постоянно, поэтому вариант написать внешний скрипт на Python, который на основе xls-шаблона создавал бы отчет, вставляя нужные данные, не годился (хотя изначально хотел сделать именно так). "Вот если бы в Excel был встроен Python для скриптинга, то все было бы в десять раз проще", - подумал я и набрал в Google: "excel with python". Оказалось, что подобной ерундой был озадачен не только я
.
Excel + PythonОдин из первых найденных проектов - PyXLL (
www.pyxxl.com) позволял быстро писать на питоне функции, которые далее можно было использовать наравне со стандартными функциями Excel'я (вроде СУММА()). Я даже попробовал его в действии. Выглядит это так: ты пишешь Python-скрипт в соответствии с некоторыми правилами, реализуя необходимые действия с получаемыми данными, после чего через специальный аддон для Excel'я импортируешь написанные функции. Не так плохо, но хотелось прямо в коде Python обращаться к нужным ячейкам электронной таблицы. И это позволял другой найденный аддон DataNitro (
datanitro.com). После его установки в Excel'e появляется новая вкладка, откуда вызывается редактор. Интеграция выполнена очень удобно, поэтому можно, не сильно заморачиваясь, написать что-то вроде:
Cell("A1").Value = "Hello, World!"
Далее запускаем сценарий с помощью кнопки на панели тулбара и получаем нужное значение в ячейке A1! Недолго думая, я стал наращивать функционал, который был мне нужен. Пробую импортировать библиотеки для работы с нужными форматами и прочитать данные - все работает. Запрашиваю через API информацию из нескольких онлайн-сервисов - все отлично агрегируется. Пишу простенькую приблуду для рассылки отчетов - все отлично отправляется. В итоге за тридцать минут удается сделать скрипт, который будет экономить два часа - те, что превращались для меня в пытку
. Сперва я даже начал выполнять в Python все расчёты, лишь позже вспомнив, что с этим справится сам Excel. Впрочем, если нужно посчитать что-то серьезное, то ничего не стоит подгрузить математический модуль NumPy и делать любые научные вычисления.
Вкладка аддона, с помощью которой реализуется интеграция DataNitro и ExcelВыжать максимумСкриптинг на Python - всегда гарантия хорошей расширяемости приложения. Взять хотя бы редактор Sublime Text: плагины для него уже есть на любой случай жизни. Впрочем, можно не ходить далеко за примером. Один из создателей DataNitro в качестве иллюстрации возможностей своей разработки написал на Excel'e Twitter-клиент (подробнее можно прочитать здесь:
bit.ly/Res2mZ). Причем минимальными усилиями благодаря питоновской обертке для Twitter API - tweepy (
github.com/tweepy/tweepy). Конечно, это всего лишь Proof-of-Concept, но зато хорошая иллюстрация того, что интеграция с Python с его огромным количеством готовых модулей на любой случай жизни может быть очень полезной. Кстати, сделать такую фишку не так уж и сложно, о чем пишется в официальной документации Python. А освоить основы языка можно за полчаса. К слову, интерактивная школа по программированию Codeacademy как раз выпустила неплохой курс (
http://codecademy.com/tracks/python).
Прикрепленные файлы:
Screen-shot-201(…).png (134.34 кб.) Скачано 499 раз