На Хабре уже была новость об этом знаменательном событии. Правда, она похожа на пересказ официального пресс-релиза Microsoft, но такой и должна быть "новость".
Я же по какой‑то непонятной мне самому причине начал пробовать использовать Python внутри Excel раньше, несколько недель тому назад. Безуспешно. Не получилось вопреки всем моим усилиям: в начале подключился к Microsoft 365 Insider, Beta Channel — там опции не наблюдалось, затем загрузил add‑in от Excel Labs, Microsoft Garage project — фича, хотя и запустилась, но у меня не работала, постоянно возвращая ошибки.
И вот 12.10.2023 пришёл и-мейл с радостным известием и после обновления Office (уточняю - Microsoft 365 Insider, Beta Channel) в меню Formulas есть опция Python in Excel
ввод в командную строку
=PY(
приводит к превращению текущей ячейки в подобие ячейки Jupyter Notebook.
Как это работает
Код исполняется на серверах Microsoft.
Все что нужно сделать на локальном компьютере -- запустить Excel и ввести в ячейку уже знакомую нам волшебную комбинацию =PY(
.
Затем можно вводить код. Конечно, же copy‑paste работает. Синтаксис — Python, с небольшой спецификой, если нужно обращаться к данным.
Команда Ctrl+Enter
запускает код на исполнение.
Зачем он, Python, внутри Excel вообще нужен?!?
Это главный вопрос. И вопреки всем моим тяжелым размышлениям, ответа не нахожу, хотя и очень стараюсь.
Есть ли преимущества перед независимым использованием двух продуктов, обмениваясь при необходимости между ними данными? Возможно, такие преимущества и есть, но — со знаком вопроса. Большим и жирным знаком вопроса.
Например:
Можно обойтись вообще без установки Python.
Для простых задач, которые эффективнее решать кодом, чем встроенными инструментами Excel, не нужно плодить сущности: и код, и данные могут жить внутри одного файла.
Что‑то еще, мне неизвестное или не приходящее в голову.
Рассуждая трезво, ничего рационального здравому смыслу, требующему забыть о Python в Excel как о ненужной игрушке, я противопоставить не могу. Но! Прокрастинация и/или любопытство вынуждают разбираться с фичей и придумывать сценарии ее использования. Человек — слаб (я точно), не может устоять перед соблазнами.
Результатом моей слабости и стал этот материал.
Первое знакомство
По уже устоявшейся отвратительной привычке, вместо того, чтобы начать процесс с внимательного чтения релевантной страницы Microsoft, приступил к исследованию самым простым и эффективным из всех методов, а именно «методом тыка». Что, как часто это бывает, привело к нескольким часам метаний от одной элементарной ошибки к другой и пустой трате времени и нервной энергии. К счастью, и того, и другого у меня — с запасом, ведь я регулярно практикую осознанное дыхание.
Здравый смысл все же возобладал и — о чудо! — после знакомства с документацией (ссылки в подвале материала) ларчик открылся.
Как оказалось, то, что код исполняется на серверах Microsoft, имеет побочные эффекты: задержка по времени, нельзя устанавливать сторонние библиотеки, доступ к данным вне текущей рабочей книги — только через Power Query, нельзя сохранять данные вне текущей рабочей книги и т. д.
Плюс Python‑синтаксис — часто с поправкой на «жизнь внутри Excel». Например, чтобы присвоить переменной значение из ячейки В2 пишем x = xl(«B2»)
.
И, конечно, писать код внутри командной строки Excel — удовольствие для извращенцев. Хотя ничего не мешает писать в текстовом редакторе и затем copy‑paste. Со всеми «НО», большими и малыми.
Попробую на реальном жизненном кейсе.
Эпический фэйл
Со средины января этого, 2023, года у меня длится роман с Garmin, в частности, с его спортивными часами, мобильным приложением и личным кабинетом. Роман -- специфический (нет, нет, никаких девиаций!), требующий периодической обработки данных: каждую неделю я выгружаю и обрабатываю данные о тренировках, дыхательных упражнениях и т. п., а затем комбинирую с записями о пульсе в состоянии покоя и HRV. С задачей сейчас без проблем справляется написанный мной Python script, живущий в отдельном файле, но (здесь должна быть фраза про любопытство и прокрастинацию) я ведь решил разобраться с Python in Excel!
Поэтому, решил я, заранее выгруженным из раздела Activities личного кабинета CSV-файлом с сырыми данными (и не только ими) будет заниматься новый экземпляр прирученного Excel Python. Суммировать, подтягивать недостающие, объединять, обновлять базу данных.
Но, к моему стыду, после нескольких часов борьбы я сдался и перешел к задаче попроще.
А теперь получилось.
Работаю с CSV: читаю и обрабатываю данные.
Данные с Garmin я дополняю записями о пульсе в состоянии покоя и HRV, полученными из приложения Elite HRV (что это такое). Выгрузить данные из не-ПРО версии Elite HRV самому нельзя, но можно их запросить и -- о чудо -- через несколько минут на почту придет ссылка для загрузки архива из TXT-файлов, дата-сетов с записями каждого выполненного в приложении замера.
Дата-сеты в данном случае -- RR-интервалы, каждый из которых -- время в миллисекундах между сердцебиениями. Мне нужно (действительно "нужно", а не "захотелось", запросил врач-кардиолог) извлечь показания пульса в каждый момент замера и построить график, отображающий, как пульс изменялся.
Не могу сказать, что все прошло без сучка и задоринки, были небольшие сложности с созданием запросов (строка кода rr_intervals = xl("EliteHRV_SS"), но в целом на разработку этого суперсложного кода ушло минут пятнадцать.
# read data
rr_intervals = xl("EliteHRV_SS")
rr_intervals.columns = ['rr_intervals']
rr_intervals['rr_intervals'] = pd.to_numeric(rr_intervals['rr_intervals'])
# calculating heart rate for each interval
rr_intervals['heart_rate'] = (60000 / rr_intervals['rr_intervals']).astype(int)
# Calculate cumulative time in seconds for each RR interval
cumulative_time = np.cumsum(rr_intervals['rr_intervals'].values) / 1000 # Convert from ms to s
cumulative_time = [int(t) for t in cumulative_time]
heart_rates = rr_intervals['heart_rate'].values
df = pd.DataFrame({
'timepoints': cumulative_time,
'heart_rate': heart_rates
})
# Plotting
plt.figure(figsize=(15, 6))
plt.plot(cumulative_time, heart_rates, label='Heart Rate', color='blue')
plt.xlabel('Time (seconds)')
plt.ylabel('Heart Rate (bpm)')
plt.title('Heart Rate Over Time')
plt.legend()
plt.grid(True)
plt.show()
Код запустился и, главное, работает, как и задумывалось: данные из TXT‑файла экспортировались, график построился.
Немного об особенностях
Кроме специфик в работе с данными, особенно внешними, и необходимости костылей для сохранения данных вне текущей рабочей книги, обнаружил еще несколько особенностей.
Нет необходимости импортировать библиотеки, если они (библиотеки) установлены на сервере Microsoft. Обратите внимание -- в строке
pd.to_numeric(rr_intervals['rr_intervals'])
из Pandas вызываетсяto_numeric
, но импорта Pandas нет.Автодополнение работает, но не так красиво, как мы привыкли.
Уверен, что список особенностей -- гораздо длиннее.
Буду ли использовать фичу?
Ответ: скорее "да", чем "нет". Для простеньких задач, вроде элементарной обработки небольшого дата-сета, вполне рабочий инструмент.
Но как только задача хоть немного усложняется, обычный Python (Anaconda в моем случае) -- гораздо удобней и эффективней.
А вы как думаете? Попробуете?
Ссылки:
Комментарии (65)
levge
25.10.2023 05:43+2Мне кажется очень полезная фича, во многих организациях есть файлы с кучей сложного VBA кода, который теперь можно будет переписать на питон и использовать через Sharepoint. Вот заживём то теперь :-)
Hungryee
25.10.2023 05:43+18Да, только адекватные организации не будут тянуть внешнюю зависимость от загадочных серверов микрософта - это тупо ненадежно, а еще есть моменты комплаянса
levge
25.10.2023 05:43+2Если в организации уже есть Sharepoint Online или Onedrive, то зависимость и так существует. Конечно кто не работал в облаке, то наверно туда и не пойдут.
Hungryee
25.10.2023 05:43+2Обмен файлами и зависимость кодовой базы - это разные зависимости. По этой же причине условный Databricks - наполовину ущербный продукт.
ritorichesky_echpochmak
25.10.2023 05:43Только адекватные организации даже VBA использовать не будут и вообще по желанию левой пятки включать все подряд скрипты... Что всё ещё не мешает использовать Python для работы с типовыми отчётами
IvanSTV
25.10.2023 05:43+1ну, не скажу я, что код на VBA сильно сложней Питона, VBA достаточно развит, чтобы покрывать почти все потребности, и во многом даже проще. И, что самое важное - пока что я не вижу практических задач для пользователя для того, чтобы вместо VBA фигачить на питоне.
Плюс есть один момент, исключительно важный - за 30 лет на VBA написана огромная масса кода и есть дикое количество людей с нужным опытом и знаниями, развита среда - как минимум десяток ресурсов, где можно справочно посмотреть что-то по задачам для VBA я назову прям сходу. А для питона в Экселях надо будет велосипед изобретать заново, где-то искать такого же прибабахнутого питониста в экселях, чтобы вдвоем развести руками "я, чувак, такого не делал никогда, не знаю", потому что среды нет, и появление ее - это достаточно значительное время. Написать "Hello, world" и закрасить ячейку - это классно, но как насчет полноценных приложений с интефейсами, как это будет работать - этого не знает пока даже сам мелкософт
HOLAOLA
25.10.2023 05:43Я как раз работаю в такой организации. И сущностей и ООП и всех отсальных радостей жизни там вполне себе хватает. VBA Хорош, очень хорош для таких задач. Но у него есть лимиты и плюс он иногда бывает крайне неудобен. Буквально пару дней назад еле еле уговорил руководство перевести все с VBA на Python. Правда, не знаю, с этой фитчей или нет. У меня была немного другая задумка... Но было бы вполне себе неплохо если бы она адекватно работала... Посмотрим во что это все выльется ...
З.С. Почитал коментарии ниже, теперь вообще в сомнениях =)))
seventhevil
25.10.2023 05:43+16Очень хочется локально выполнять код... Подписки подписками, но не везде есть сеть....
dbax
25.10.2023 05:43+13И не всегда есть подписка ;)
seventhevil
25.10.2023 05:43+1Напрашивается опция "установить компонент" для желающих или использовать сервис для экономии ресурсов, да?
maledog
25.10.2023 05:43+7Если человек знает python, то что ему мешает просто взять библиотеку для работы с xlsx, прочитать файл, выполнить нужные манипуляции с данными, и записать?
seventhevil
25.10.2023 05:43Ничего не мешает, но раз уж тут такое дело, то почему бы и не пофантазировать?
konst90
25.10.2023 05:43+5То, что потом этот файл может быть нужно передать коллеге, который не знает Питон.
И надо, чтобы этот коллега мог открыть xlsx, вбить туда нужные данные, нажать кнопочку и получить расчет. Без установки Питона.
Gonchar_POTT Автор
25.10.2023 05:43Не могу плюсануть (заряд сегодняшний иссяк), но горячо соглашусь. Вполне рабочий сценарий.
maledog
25.10.2023 05:43+1А предложенный способ с питоном где-то на сервере лучше?
Хорошо. Возьмем Go его библиотеки позволяют прочитать и записать xlsx и построить график. при этом будучи скомпилированным он может быть добавлен в качестве исполняемого файла или библиотеки и гарантированно быть выполненным в ос под которую скомпилирован. При этом синтаксис проще чем python.
Кстати, а что мешает поднять свой сервис где коллега заполнит форму и получит результат в xlsx.
И вот еще вариант. В LibreOffice python один из встроенных языков вместе с псевдо-VBA.konst90
25.10.2023 05:43гарантированно быть выполненным в ос под которую скомпилирован
Это если пользователю разрешено выполнять сторонние исполняемые файлы. Кроме того, вам понадобится объяснить Маше из закупок, что теперь она будет работать не в привычном Excel (в котором был VBA), а запускать какие-то файлы.
А ещё бывает легаси, в которое проще запихнуть десять строк на VBA или Питоне, чем полностью переписывать.
maledog
25.10.2023 05:43+4Угу. Я сам админом был и мне это знакомо. Мы запретим исполнение всего и вся, что не из Program Files. Но разрешим прямое соединение с чужим сервером, на котором исполним код? А где гарантия, что при помощи python он не сформирует локальный скрипт на VBS или PS который будет выполнен на локальной машине? Каюсь я как-то даже разозлился. Коллега админ после слияния компаний выдал ограниченные права на все на уровне пользователя. Но я то работал с головной компании, потому в рамках выделенных мне прав я устроил повышение привилегий до администратора домена, после чего аннулировал его запись.
А ещё бывает легаси, в которое проще запихнуть десять строк на VBA или Питоне, чем полностью переписывать.
Т. е. Excel это новый PDF? не стоит наделять программы теми качествами, для которых они не задумывались. Давайте на чистоту, ваша "Маша из закупок" имеет совместимую версию Excel? Поскольку я не раз наблюдал ситуацию когда "Маше из закупок" приходилось устанавливать MS Office 2003, MS Office 2007, MS Office 2010, MS Office 2013... Поскольку у каждого контрагента свои представления о прекрасном.
/Это если пользователю разрешено выполнять сторонние исполняемые файлы.
Кстати, а есть какие-то разрешения на исполнение библиотек вызываемых через VB из Excel? Потому что раньше это была дырень из дыреней. Например вызываю COM, так на него даже таймауты WSH не дейтвуют. приходилось вызывать внешний гипервизор для исполнения WSH чтобы он вовремя прибил скрипт.
80nph1r3
25.10.2023 05:43Потому что у этих библиотек очень ограниченный функционал, ещё такой способ не позволяет работать с таблицей и производить манипуляции с данными кодом одновременно
maledog
25.10.2023 05:43Если библиотека нормальная, то позволяет записать и формулу в ячейку. Подозреваю и скрипт на vba поскольку оперируют обычно на уровне XML/ZIP. То что некоторые файлы не исполняются в некоторых версиях Excel скорее проблема обратной совместимости и недостаточной документированности формата.
CrazyElf
25.10.2023 05:43Даёшь Питон в каждый утюг!
firehacker
25.10.2023 05:43+2Даешь VBA в каждый тостер.
GospodinKolhoznik
25.10.2023 05:43+8Питон это новый VBA
smx_ha
25.10.2023 05:43+2Вряд ли, сомневаюсь что они всё api по работе с excel и взаимодействие с com объектами там обеспечат :(
firehacker
25.10.2023 05:43+1Если только рассматривать VBA как нечто (что угодно), что решает задачу добавить автоматизацию в Excel, и не важно, как это устроено изнутри и что может. Тогда да.
Если зрить в корень — тогда нет. VBA предлагает ООП с правилами игры по правилам COM, а правила игры COM подразумевает использование четко оговоренного ABI, которое очень похоже и совместимо с анатомией C++ классов, но не ограничено языком C++.
Поэтому, играя по правилам COM, VBA-код может взаимодействовать с объектами (т.е. держать ссылки и вызывать методы), написанные на любом языке, будь то хоть VB, хоть Си, хоть Си++, хоть Дельфи, хоть ваш самодельный петпроектный язык.
Но мало этого: код сторонних компонентов, написанный на Си или Си++ может так же легко взаимодействовать с объектами, написанными на VB в рамках VBA-проекта.
А может ли Питон работать с любым COM-объектом? А может ли какая-нибудь библиотека, написанная на Си, Си++ или VB6 получить ссылку на питоновский объект и взаимодействовать с ним?
wofs
25.10.2023 05:43Даёшь Питон в каждый утюг!
Уже, мк можно программировать на MicroPython. То есть условная стиральная машина вполне может управляться программой на Python :)
maledog
25.10.2023 05:43Это вряд ли. Обычно все эти python, lua и прочие высокоуровневые скриптовые, применяют для того чтобы дать пользователю возможность написать свою программу, не погружаясь в изучение железа. например какой-нибудь свой обработчик данных в модеме, PLC или например в ESP. Сами по себе они и половины аппаратных возможностей не охватывают, кроме того не могут выполнить код чувствительный к задержкам, когда буквально нужно отсчитывать такты.
В случае со стиральной машинкой, как правило пользователям достаточно воспользоваться одной из предложенных программ, а не писать программу для стирки любимого шарфика.
namikiri
25.10.2023 05:43+35Код исполняется на серверах Microsoft.
Отвратительно. Это что получается, чтобы выполнить код с обращением к моим данным в Excel, я должен отправить MS не только собственно код, но ещё и содержимое самих таблиц? Или это в нынешних реалиях само собой разумеющееся? А как же, как её там... конфиденциальность... или как... безопасность?.. не?..
AlexeyK77
25.10.2023 05:43+11как у ИБ-шника у меня этот вопрос возник первым. На самом деле, первое что сейчас прийдется делать, так найти как эту штуку заблочить через групповые политики.
Gonchar_POTT Автор
25.10.2023 05:43-5Если вы пользуетесь OneDrive, то, вероятно, содержание самих таблиц для злоумышленника из Microsoft уже известно.
kAIST
25.10.2023 05:43+2И самое главное - непонятно зачем так нужно было делать. Дистрибутив питона весит не так уж и много, по сравнению с дистрибутивом офиса. Ну и дополнительные библиотеки не установишь.
mentin
25.10.2023 05:43+4Полезнейшая фича, но не потому что она нужна, а потому что Майкрософт теперь стал гарантом обратной совместимости Питона, и такого факапа как с переходом со второго на третий больше не будет.
alexandershelupinin
25.10.2023 05:43+1Зачем он, Python, внутри Excel вообще нужен?!?
Это главный вопрос. И вопреки всем моим тяжелым размышлениям, ответа не нахожу, хотя и очень стараюсь.а опция что человек знает Python и не знает макросы в Excel совсем не рассматривается ? И поэтому ему проще в полученном от коллег Excel написать нужную логику на Python, не ?
Gonchar_POTT Автор
25.10.2023 05:43Это мой случай: кое-как знаю Python и совсем не умею "в макросы и/или VBA".
kingleonfromafrica
25.10.2023 05:43+2Вообще нет ни какой проблемы, с известными условностями, выполнять код локально установленного Python из VBA.
А сейчас VBA и знать не нужно - его знает ChatGPT и все "склейки" можно выполнять используя сгенерированный там код.
Довольно вычурный и не очевидный бывает код VBA для Access. Для Excel же это реально Бэйсик и если Вы осилили Python, то ни чего загадочного Вы там не найдете и уж точно не запутаетесь.ritorichesky_echpochmak
25.10.2023 05:43А вы ChatGPT и Copilot совсем не пользовались, да? Там иногда без них что-то сделать даже погуглив быстрее, чем за ними разобраться и починить...
kingleonfromafrica
25.10.2023 05:43+1Вангую, что и живых людей вы часто ставите в тупик своими вопросами :))
Есть легкий путь писать промты с неплохим результатом:
Указывайте весь контекст исполнения в одном запросе, не надейтесь на его верную интерпретацию из начала сессии. Формируйте запрос всегда как будь то он первый и единственный.
Предельно четко формулируйте какой конкретно код вы хотите получить подробно описав алгоритм. Не давайте возможность ИИ додумывать алгоритм.
"Задай вопросы если возникает неопределенность"
"Подробно опиши почему именно так"
Есть тяжелый: загуглить "Научный метод" и читать эту статью гугля все непонятные термины до тех пор, пока вопросы не перестанут возникать, а собственные размышления начнут соответствовать этой методологии.
Тогда ИИ будет отвечать Вам корректно ВСЕГДА.
Минус: Вас перестанет понимать большая часть Вашего окружения, но Вам будет абсолютно всё равно, что там бубнят эти алогичные умственнонеполноценные тупни :))))
---------------------
Лично у меня иногда некоторые проблемны возникают только из-за факта существования разных версий библиотек и трансляторов. В остальном код ИИ меня полностью устраивает.
ykira
25.10.2023 05:43+1Тоже думал зачем питон если есть vba, ведь изучение API занимает намного больше времени чем взглянуть на синтаксис VBA и этим временем можно пренебречь
degroeg
25.10.2023 05:43+2вот есть у меня простенькая таблица 3х3. По диагонали могут быть значения "Pass", "Fail", "In Analysis" и еще парочка. И вот в зависимости от зачения в другом столбце, я должен выставить либо общее значение с максимальным проритетом для всех (напр. pass) или для каждой клетки отдельно.
То что в питоне решается обычным else, if, switch ... , в екселе превращается в формулу длинной в два экрана, которой любой Perl позавидует.
мне сначала пришлось общаться с ChatGPT что бы эту написать формулу, а через три дня снова обращаться к ChatGPT, что бы тот обьяснил мне же, что я там писал :-)
zodchiy
25.10.2023 05:43+212 лет прошло - Python in Excel https://github.com/iEmiya/pyExcel
Проект не мой.
GospodinKolhoznik
25.10.2023 05:43+9При попытке скачать другой браузер через MS Edge, всплывает вопрос
Нам нравится, что вы есть у нас! Не могли бы вы потратить минутку и рассказать нам, почему вы пробуете другой браузер?
Да вот по этой самой причине, что код исполняется на серверах Microsoft, передавая вам и мои данные и мой код. Поэтому я хочу держаться от вас как можно дальше, и при всякой возможности вообще не пользоваться вашими продуктами. Дома уже давно перестал. На работе ещё вынужден пользоваться, но спасибо таким нововведениям, чувствую скоро и на работе откажемся.
Vsevo10d
25.10.2023 05:43+3Ну вообще, коллега у меня ворочает какими-то адовыми таблицами в экселе, которые туда выгружает некий легаси-скрипт, написанный в нашей лаборатории под специфическую задачу. Работать на нем в 365 прямо в документе без необходимости ставить на рабочие компы еще и IDE может быть удобным кейсом. Другое дело то, что люди, умеющие в питон, поставят себе питон и будут работать в нем сразу.
13werwolf13
25.10.2023 05:43+6почему в голосовалке есть "кто такой Питон?" но нет "кто такой exel?"?
ну и как бэ
Код исполняется на серверах Microsoft.
тонко намекает что ну его нафиг юзать этот ваш exel..
iddqda
25.10.2023 05:43+4в либрофисе давно и питоны есть и JS и еще какая то экзотическая хрень
$ apt-cache search libreoffice-script libreoffice-script-provider-bsh - BeanShell script support provider for LibreOffice scripting framework libreoffice-script-provider-js - JavaScript script support provider for LibreOffice scripting framework libreoffice-script-provider-python - Python script support provider for LibreOffice scripting framework
не знал что Excel тут в догоняющих
nagayev
25.10.2023 05:43+1Это на самом деле довольно ожидаемо, потому что не будет же Либра завязываться на VBS. Как минимум это не будет работать на линуксе.
lazy_val
25.10.2023 05:43OpenOffice еще с каких-то лохматых времен макросы на Python поддерживал, ну и LibreOffice естественно не отстает
А эти проснулись наконец
Pavel1114
25.10.2023 05:43Excel ещё бы с CSV научиться нормально работать. Хотя наверно это сознательная политика - "используйте наши форматы"
iiigor94
25.10.2023 05:43Удобно если для расчётов нужно парсить какие то данные с сайтов, например текущий курс валют, или обращаться к апи какого либо сервиса, наверное еще фильтрация данных , да много чего интересного думаю можно сделать используя питон в екселе.
andrey_27
25.10.2023 05:43-1замечательный Python
Соболезную всем тем, кто использует этот отброс эволюции...
wolkodav96
25.10.2023 05:43https://youtu.be/ubqsRcCUcB4?si=uqD2IFMfAHxG-ADz ещё пару лет назад вот так развлекались, подрубая питон к экселю.
astentx
25.10.2023 05:43+2Для обращений к API и обработки данных довольно давно существует встроенный PowerQuery, неплохо документированный и не громоздкий, намного более читаемый в сравнении с VBA, т.к. функциональный подход в обработке данных позволяет проследить логику. Решение с добавлением питона в таком костыльном виде непонятно для кого: энтерпрайз должен вырезать из соображений безопасности, для себя можно самому поставить локальный питон и делать в нем что надо. Создание каких-то формочек в экселе? Это скорее для контор, где "программист", системный администратор, сетевик и электрик - одно лицо, умеющее пользоваться VBA, чтобы собрать что-нибудь на коленке, и питон ему ни к чему, ну только чтобы быть в тренде и похвастаться знакомым.
Gonchar_POTT Автор
25.10.2023 05:43Вариант «для себя, чтобы для исполнения простого, в несколько строк кода, работающего с данной рабочей книгой, не нужно было вызывать Python и иметь отдельный файл со скриптом», такой сценарий лично для меня становится очень даже рабочим.
economist75
25.10.2023 05:43+3COM-либы XLWings и PyXLL дают больше, доступны 5 лет начиная с MSO 2007 и выполняются локально.
Для LibreOffice есть встроенный и довольно свежий Python, который дает делать все то же, создавать свои UDF и менять документы через UNO (некий аналог COM) c глубокой интроспекцией кода и API LibreOffice.
Javian
Имхо, резко ограничивает практическую пользу.
Gonchar_POTT Автор
Вы имеете ввиду безопасность? Или еще что-то? Поделитесь, пожалуйста, своими замечаниями.
Javian
Компьютер без доступа к интернет. Либо нет изначально или авария и работа остановилась.
Gonchar_POTT Автор
100% - да, появляется еще одно звено, которое может оборваться, что, как правило, случается в самый неподходящий момент.
DeskundigeICT
У нас на работе гибридное облако. По умолчанию берём данные из SharePoint.
snakers4
Вроде новость про питона была уже чуть ли не полгода назад и все сразу сказали, что питон вышел дохлый.
Появился бы питон у меня в Office 2010 - цены бы не было. А то формулы там на любителя. А так конечно такое.