Здравствуйте! Есть необходимость программирования рутинной работы в Excel. Сам любитель, раньше пробовал писать в VBA. Решил создать сайт (для друзей) и обрабатывать Excel файлы. Есть ли VBA запускается внутри файла Excel, то встал вопрос о внешнем обработчики / редакторе файла.
Искал в сети и сделал выбор на Python - библиотека - Openpyxl.
Пользуюсь 3 дня и пока что по ощущениям библиотека ужасна, не подточена под excel. Гемор в том что постоянно ошибки типов данных (кортеж кортежей, тип итерации не подлежит и тд.). Даже сложность в указании заранее неизвестных диапазонов.
Мои задачи в основном в создании бухгалтерских алгоритмов, выборка данных, раскидывание в определенные ячейки, арифметические действия и т.д.
На что можно заменить openpyxl? Думал о Pandas, но он вроде для анализа в основном, подходит ли он для моих задач и проще ли им пользоваться?
Я понимаю что плохому танцору.......... Но какое есть оптимальное решения для прогера любителя?
Во как бывает, каким бы ты там не был программистом vba всех карает. Ну во первых если вы хотите заполнить кортеж данными из диапозоннами листа то это черевато рядом проблем. 1) несколько типов данных в одной ячейке 2) ячейка хранит кешь, соответственно надо чистить 3) ошибка опредения диапозона. Каждая ошибка это отдельная история, и 1 часом решение не обойдется))
Если ексель, тот формат с которого все начинается и заканчивается требуется раскрашивание листа, формулы и тд и тп, то альтернативы VBA - нет. Можно попробовать шарп, но он также потребует включенного екселя.
Если в екселе только данные, то практически любой ЯП нормально делает импорт и експорт csv
В качестве альтернативы можно рассмотреть вызов VBA макросов из внешних к обрабатываемому файлу источников:
Любая запущенная программа из MS Office. Например, у меня есть опыт создания внутрикорпоративного сервиса на Outlook. Т.е. можно использовать почту как внутренний интерфейс.
Вызывать VBA макросы из Command Line/Powershell. Такой вариант позволяет на Windows связать web-бэкенд на Python с бизнес-логикой на VBA.
Существующие библиотеки созданы в основном для красивого экспорта данных в эксель, а не полноценную работу с этим форматом.
Поэтому действительно нужно уходить от того, чтобы писать в эксель формулы. Делайте все расчеты в вашем софте, а в эксель делайте экспорт только статических данных для печати или просмотра юзером. Без интерактивности. Максимум - простые фильтры.
Игорь, его никто не открывал. То, что Excel перешел с бинарного на xmlx не означает, что эксель внезапно стал open-source. Просто реверс-инженеринг стал проще и обратная совместимость гораздо выше.
Тем не менее
1. полная спецификация отсутствует в публичном доступе.
2. Офис не стоит на месте, новые обновления в формате естественно не публикуются.
Игорь, А где там упоминание, что это Microsoft Standard?
Это предложение для офисных приложений, скорее всего его полностью поддерживает OpenOffice.
Но для Microsoft этот документ лишь рекомендация, а не спецификация. Могут поддерживать, не поддерживать, поддерживать частично.
Office Open XML (also informally known as OOXML or Microsoft Open XML (MOX))[3] is a zipped, XML-based file format developed by Microsoft for representing spreadsheets, charts, presentations and word processing documents. The format was initially standardized by Ecma (as ECMA-376), and by the ISO and IEC (as ISO/IEC 29500) in later versions.
Тем не менее, написать библиотеку, которая будет равна по возможностям целому MS Office - никто не будет заморачиваться. Вы же посмотрели размер документа-описания.
Да, конечно там нет VBA, формул и макросов и как они взаимодействуют с документом.
Но одних name convention там мегабайты.
Поэтому как я уже писал ранее - все расчеты ведите в вашем софте, а в excel скидывайте готовую статику.
Мне кажется тут с экселем смешивается мягкое и теплое. Если вам надо "обертку" для работы с эксель, то это один вариант (тут можно долго искать и выбирать, что позволит решать те или иные задачи и какие есть мануалы). Если же вам главное получить доступ к объектной модели, то тут все равно, какая библиотека и что она может, лишь бы создавался объект (в том числе и приложение эксель), а методы и функции - полный набор от майкрософт ("через точку", можно даже подсмотреть в офисном VBE) с описанием "от производителя".