На Хабре уже была новость об этом знаменательном событии. Правда, она похожа на пересказ официального пресс-релиза Microsoft, но такой и должна быть "новость".

Python on a couch, greeting World.
Python on a couch, greeting World.

Я же по какой‑то непонятной мне самому причине начал пробовать использовать 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

Python in Excel
Python in Excel

ввод в командную строку

=PY(

приводит к превращению текущей ячейки в подобие ячейки Jupyter Notebook.  

Как это работает

Код исполняется на серверах Microsoft.

Все что нужно сделать на локальном компьютере -- запустить Excel и ввести в ячейку уже знакомую нам волшебную комбинацию =PY( .

Затем можно вводить код. Конечно, же copy‑paste работает. Синтаксис — Python, с небольшой спецификой, если нужно обращаться к данным.

Команда Ctrl+Enter запускает код на исполнение. 

Зачем он, Python, внутри Excel вообще нужен?!?

Это главный вопрос. И вопреки всем моим тяжелым размышлениям, ответа не нахожу, хотя и очень стараюсь.

Есть ли преимущества перед независимым использованием двух продуктов, обмениваясь при необходимости между ними данными? Возможно, такие преимущества и есть, но — со знаком вопроса. Большим и жирным знаком вопроса.

Например:

  1. Можно обойтись вообще без установки Python.

  2. Для простых задач, которые эффективнее решать кодом, чем встроенными инструментами Excel, не нужно плодить сущности: и код, и данные могут жить внутри одного файла.

  3. Что‑то еще, мне неизвестное или не приходящее в голову.

Рассуждая трезво, ничего рационального здравому смыслу, требующему забыть о 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‑файла экспортировались, график построился.

Python in Excel is working. Working hard!
Python in Excel is working. Working hard!

Немного об особенностях

Кроме специфик в работе с данными, особенно внешними, и необходимости костылей для сохранения данных вне текущей рабочей книги, обнаружил еще несколько особенностей.

  1. Нет необходимости импортировать библиотеки, если они (библиотеки) установлены на сервере Microsoft. Обратите внимание -- в строке pd.to_numeric(rr_intervals['rr_intervals']) из Pandas вызывается to_numeric, но импорта Pandas нет.

  2. Автодополнение работает, но не так красиво, как мы привыкли.

Уверен, что список особенностей -- гораздо длиннее. 

Буду ли использовать фичу?

Ответ: скорее "да", чем "нет". Для простеньких задач, вроде элементарной обработки небольшого дата-сета, вполне рабочий инструмент.

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

А вы как думаете? Попробуете? 

Ссылки:

Комментарии (65)


  1. Javian
    25.10.2023 05:43
    +52

    Код исполняется на серверах Microsoft.

    Имхо, резко ограничивает практическую пользу.


    1. Gonchar_POTT Автор
      25.10.2023 05:43
      +2

      Вы имеете ввиду безопасность? Или еще что-то? Поделитесь, пожалуйста, своими замечаниями.


      1. Javian
        25.10.2023 05:43
        +23

        Компьютер без доступа к интернет. Либо нет изначально или авария и работа остановилась.


        1. Gonchar_POTT Автор
          25.10.2023 05:43
          +2

          100% - да, появляется еще одно звено, которое может оборваться, что, как правило, случается в самый неподходящий момент.


        1. DeskundigeICT
          25.10.2023 05:43
          +1

          У нас на работе гибридное облако. По умолчанию берём данные из SharePoint.


    1. snakers4
      25.10.2023 05:43

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

      Появился бы питон у меня в Office 2010 - цены бы не было. А то формулы там на любителя. А так конечно такое.


  1. levge
    25.10.2023 05:43
    +2

    Мне кажется очень полезная фича, во многих организациях есть файлы с кучей сложного VBA кода, который теперь можно будет переписать на питон и использовать через Sharepoint. Вот заживём то теперь :-)


    1. Hungryee
      25.10.2023 05:43
      +18

      Да, только адекватные организации не будут тянуть внешнюю зависимость от загадочных серверов микрософта - это тупо ненадежно, а еще есть моменты комплаянса


      1. levge
        25.10.2023 05:43
        +2

        Если в организации уже есть Sharepoint Online или Onedrive, то зависимость и так существует. Конечно кто не работал в облаке, то наверно туда и не пойдут.


        1. Hungryee
          25.10.2023 05:43
          +2

          Обмен файлами и зависимость кодовой базы - это разные зависимости. По этой же причине условный Databricks - наполовину ущербный продукт.


      1. ritorichesky_echpochmak
        25.10.2023 05:43

        Только адекватные организации даже VBA использовать не будут и вообще по желанию левой пятки включать все подряд скрипты... Что всё ещё не мешает использовать Python для работы с типовыми отчётами


    1. IvanSTV
      25.10.2023 05:43
      +1

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

      Плюс есть один момент, исключительно важный - за 30 лет на VBA написана огромная масса кода и есть дикое количество людей с нужным опытом и знаниями, развита среда - как минимум десяток ресурсов, где можно справочно посмотреть что-то по задачам для VBA я назову прям сходу. А для питона в Экселях надо будет велосипед изобретать заново, где-то искать такого же прибабахнутого питониста в экселях, чтобы вдвоем развести руками "я, чувак, такого не делал никогда, не знаю", потому что среды нет, и появление ее - это достаточно значительное время. Написать "Hello, world" и закрасить ячейку - это классно, но как насчет полноценных приложений с интефейсами, как это будет работать - этого не знает пока даже сам мелкософт


    1. HOLAOLA
      25.10.2023 05:43

      Я как раз работаю в такой организации. И сущностей и ООП и всех отсальных радостей жизни там вполне себе хватает. VBA Хорош, очень хорош для таких задач. Но у него есть лимиты и плюс он иногда бывает крайне неудобен. Буквально пару дней назад еле еле уговорил руководство перевести все с VBA на Python. Правда, не знаю, с этой фитчей или нет. У меня была немного другая задумка... Но было бы вполне себе неплохо если бы она адекватно работала... Посмотрим во что это все выльется ...
      З.С. Почитал коментарии ниже, теперь вообще в сомнениях =)))


  1. seventhevil
    25.10.2023 05:43
    +16

    Очень хочется локально выполнять код... Подписки подписками, но не везде есть сеть....


    1. dbax
      25.10.2023 05:43
      +13

      И не всегда есть подписка ;)


      1. seventhevil
        25.10.2023 05:43
        +1

        Напрашивается опция "установить компонент" для желающих или использовать сервис для экономии ресурсов, да?


    1. maledog
      25.10.2023 05:43
      +7

      Если человек знает python, то что ему мешает просто взять библиотеку для работы с xlsx, прочитать файл, выполнить нужные манипуляции с данными, и записать?


      1. seventhevil
        25.10.2023 05:43

        Ничего не мешает, но раз уж тут такое дело, то почему бы и не пофантазировать?


      1. konst90
        25.10.2023 05:43
        +5

        То, что потом этот файл может быть нужно передать коллеге, который не знает Питон.

        И надо, чтобы этот коллега мог открыть xlsx, вбить туда нужные данные, нажать кнопочку и получить расчет. Без установки Питона.


        1. Gonchar_POTT Автор
          25.10.2023 05:43

          Не могу плюсануть (заряд сегодняшний иссяк), но горячо соглашусь. Вполне рабочий сценарий.


        1. maledog
          25.10.2023 05:43
          +1

          А предложенный способ с питоном где-то на сервере лучше?
          Хорошо. Возьмем Go его библиотеки позволяют прочитать и записать xlsx и построить график. при этом будучи скомпилированным он может быть добавлен в качестве исполняемого файла или библиотеки и гарантированно быть выполненным в ос под которую скомпилирован. При этом синтаксис проще чем python.
          Кстати, а что мешает поднять свой сервис где коллега заполнит форму и получит результат в xlsx.
          И вот еще вариант. В LibreOffice python один из встроенных языков вместе с псевдо-VBA.


          1. konst90
            25.10.2023 05:43

            гарантированно быть выполненным в ос под которую скомпилирован

            Это если пользователю разрешено выполнять сторонние исполняемые файлы. Кроме того, вам понадобится объяснить Маше из закупок, что теперь она будет работать не в привычном Excel (в котором был VBA), а запускать какие-то файлы.

            А ещё бывает легаси, в которое проще запихнуть десять строк на VBA или Питоне, чем полностью переписывать.


            1. 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 чтобы он вовремя прибил скрипт.


      1. 80nph1r3
        25.10.2023 05:43

        Потому что у этих библиотек очень ограниченный функционал, ещё такой способ не позволяет работать с таблицей и производить манипуляции с данными кодом одновременно


        1. maledog
          25.10.2023 05:43

          Если библиотека нормальная, то позволяет записать и формулу в ячейку. Подозреваю и скрипт на vba поскольку оперируют обычно на уровне XML/ZIP. То что некоторые файлы не исполняются в некоторых версиях Excel скорее проблема обратной совместимости и недостаточной документированности формата.


  1. CrazyElf
    25.10.2023 05:43

    Даёшь Питон в каждый утюг!


    1. firehacker
      25.10.2023 05:43
      +2

      Даешь VBA в каждый тостер.


      1. GospodinKolhoznik
        25.10.2023 05:43
        +8

        Питон это новый VBA


        1. smx_ha
          25.10.2023 05:43
          +2

          Вряд ли, сомневаюсь что они всё api по работе с excel и взаимодействие с com объектами там обеспечат :(


        1. firehacker
          25.10.2023 05:43
          +1

          Если только рассматривать VBA как нечто (что угодно), что решает задачу добавить автоматизацию в Excel, и не важно, как это устроено изнутри и что может. Тогда да.

          Если зрить в корень — тогда нет. VBA предлагает ООП с правилами игры по правилам COM, а правила игры COM подразумевает использование четко оговоренного ABI, которое очень похоже и совместимо с анатомией C++ классов, но не ограничено языком C++.

          Поэтому, играя по правилам COM, VBA-код может взаимодействовать с объектами (т.е. держать ссылки и вызывать методы), написанные на любом языке, будь то хоть VB, хоть Си, хоть Си++, хоть Дельфи, хоть ваш самодельный петпроектный язык.

          Но мало этого: код сторонних компонентов, написанный на Си или Си++ может так же легко взаимодействовать с объектами, написанными на VB в рамках VBA-проекта.

          А может ли Питон работать с любым COM-объектом? А может ли какая-нибудь библиотека, написанная на Си, Си++ или VB6 получить ссылку на питоновский объект и взаимодействовать с ним?


    1. wofs
      25.10.2023 05:43

      Даёшь Питон в каждый утюг!

      Уже, мк можно программировать на MicroPython. То есть условная стиральная машина вполне может управляться программой на Python :)


      1. maledog
        25.10.2023 05:43

        Это вряд ли. Обычно все эти python, lua и прочие высокоуровневые скриптовые, применяют для того чтобы дать пользователю возможность написать свою программу, не погружаясь в изучение железа. например какой-нибудь свой обработчик данных в модеме, PLC или например в ESP. Сами по себе они и половины аппаратных возможностей не охватывают, кроме того не могут выполнить код чувствительный к задержкам, когда буквально нужно отсчитывать такты.
        В случае со стиральной машинкой, как правило пользователям достаточно воспользоваться одной из предложенных программ, а не писать программу для стирки любимого шарфика.


  1. namikiri
    25.10.2023 05:43
    +35

    Код исполняется на серверах Microsoft.

    Отвратительно. Это что получается, чтобы выполнить код с обращением к моим данным в Excel, я должен отправить MS не только собственно код, но ещё и содержимое самих таблиц? Или это в нынешних реалиях само собой разумеющееся? А как же, как её там... конфиденциальность... или как... безопасность?.. не?..


    1. AlexeyK77
      25.10.2023 05:43
      +11

      как у ИБ-шника у меня этот вопрос возник первым. На самом деле, первое что сейчас прийдется делать, так найти как эту штуку заблочить через групповые политики.


    1. Gonchar_POTT Автор
      25.10.2023 05:43
      -5

      Если вы пользуетесь OneDrive, то, вероятно, содержание самих таблиц для злоумышленника из Microsoft уже известно.


      1. virtanen
        25.10.2023 05:43
        +1

        Стороннее облако? Оно, естественно, блочится среди первых.

        Я вот даже не представляю, как теперь будут эксель использовать в крупных конторах. А таблиц ведь довольно много обычно.


        1. eugrus
          25.10.2023 05:43

          VBA тоже прекрасно могут отправить по сети что угодно кому угодно


    1. kAIST
      25.10.2023 05:43
      +2

      И самое главное - непонятно зачем так нужно было делать. Дистрибутив питона весит не так уж и много, по сравнению с дистрибутивом офиса. Ну и дополнительные библиотеки не установишь.


      1. dbax
        25.10.2023 05:43
        +1

        Все как раз понятно. Чтоб подписку люди оплачивали...


        1. dwdraugr
          25.10.2023 05:43

          Так она и так платится. Уж проще было бы компонентом сделать.


  1. mentin
    25.10.2023 05:43
    +4

    Полезнейшая фича, но не потому что она нужна, а потому что Майкрософт теперь стал гарантом обратной совместимости Питона, и такого факапа как с переходом со второго на третий больше не будет.


    1. Jeshua
      25.10.2023 05:43
      +19

      Просто будет Питон и Visual Python for Applications


      1. mentin
        25.10.2023 05:43

        Могут конечно, но как только под этим перестанет работать последняя версия pandas, pytorch или tensorflow - это станет совсем никому не нужно.


  1. Jeshua
    25.10.2023 05:43

    Макрофункции вернулись


  1. alexandershelupinin
    25.10.2023 05:43
    +1

    Зачем он, Python, внутри Excel вообще нужен?!?
    Это главный вопрос. И вопреки всем моим тяжелым размышлениям, ответа не нахожу, хотя и очень стараюсь.

    а опция что человек знает Python и не знает макросы в Excel совсем не рассматривается ? И поэтому ему проще в полученном от коллег Excel написать нужную логику на Python, не ?


    1. Gonchar_POTT Автор
      25.10.2023 05:43

      Это мой случай: кое-как знаю Python и совсем не умею "в макросы и/или VBA".


      1. kingleonfromafrica
        25.10.2023 05:43
        +2

        Вообще нет ни какой проблемы, с известными условностями, выполнять код локально установленного Python из VBA.
        А сейчас VBA и знать не нужно - его знает ChatGPT и все "склейки" можно выполнять используя сгенерированный там код.
        Довольно вычурный и не очевидный бывает код VBA для Access. Для Excel же это реально Бэйсик и если Вы осилили Python, то ни чего загадочного Вы там не найдете и уж точно не запутаетесь.


        1. ritorichesky_echpochmak
          25.10.2023 05:43

          А вы ChatGPT и Copilot совсем не пользовались, да? Там иногда без них что-то сделать даже погуглив быстрее, чем за ними разобраться и починить...


          1. kingleonfromafrica
            25.10.2023 05:43
            +1

            Вангую, что и живых людей вы часто ставите в тупик своими вопросами :))

            Есть легкий путь писать промты с неплохим результатом:
            Указывайте весь контекст исполнения в одном запросе, не надейтесь на его верную интерпретацию из начала сессии. Формируйте запрос всегда как будь то он первый и единственный.
            Предельно четко формулируйте какой конкретно код вы хотите получить подробно описав алгоритм. Не давайте возможность ИИ додумывать алгоритм.
            "Задай вопросы если возникает неопределенность"
            "Подробно опиши почему именно так"

            Есть тяжелый: загуглить "Научный метод" и читать эту статью гугля все непонятные термины до тех пор, пока вопросы не перестанут возникать, а собственные размышления начнут соответствовать этой методологии.
            Тогда ИИ будет отвечать Вам корректно ВСЕГДА.
            Минус: Вас перестанет понимать большая часть Вашего окружения, но Вам будет абсолютно всё равно, что там бубнят эти алогичные умственнонеполноценные тупни :))))
            ---------------------

            Лично у меня иногда некоторые проблемны возникают только из-за факта существования разных версий библиотек и трансляторов. В остальном код ИИ меня полностью устраивает.


      1. ykira
        25.10.2023 05:43
        +1

        Тоже думал зачем питон если есть vba, ведь изучение API занимает намного больше времени чем взглянуть на синтаксис VBA и этим временем можно пренебречь


    1. degroeg
      25.10.2023 05:43
      +2

      вот есть у меня простенькая таблица 3х3. По диагонали могут быть значения "Pass", "Fail", "In Analysis" и еще парочка. И вот в зависимости от зачения в другом столбце, я должен выставить либо общее значение с максимальным проритетом для всех (напр. pass) или для каждой клетки отдельно.
      То что в питоне решается обычным else, if, switch ... , в екселе превращается в формулу длинной в два экрана, которой любой Perl позавидует.
      мне сначала пришлось общаться с ChatGPT что бы эту написать формулу, а через три дня снова обращаться к ChatGPT, что бы тот обьяснил мне же, что я там писал :-)


  1. zodchiy
    25.10.2023 05:43
    +2

    12 лет прошло - Python in Excel https://github.com/iEmiya/pyExcel

    Проект не мой.


  1. GospodinKolhoznik
    25.10.2023 05:43
    +9

    При попытке скачать другой браузер через MS Edge, всплывает вопрос

    Нам нравится, что вы есть у нас! Не могли бы вы потратить минутку и рассказать нам, почему вы пробуете другой браузер?

    Да вот по этой самой причине, что код исполняется на серверах Microsoft, передавая вам и мои данные и мой код. Поэтому я хочу держаться от вас как можно дальше, и при всякой возможности вообще не пользоваться вашими продуктами. Дома уже давно перестал. На работе ещё вынужден пользоваться, но спасибо таким нововведениям, чувствую скоро и на работе откажемся.


  1. Vsevo10d
    25.10.2023 05:43
    +3

    Ну вообще, коллега у меня ворочает какими-то адовыми таблицами в экселе, которые туда выгружает некий легаси-скрипт, написанный в нашей лаборатории под специфическую задачу. Работать на нем в 365 прямо в документе без необходимости ставить на рабочие компы еще и IDE может быть удобным кейсом. Другое дело то, что люди, умеющие в питон, поставят себе питон и будут работать в нем сразу.


  1. 13werwolf13
    25.10.2023 05:43
    +6

    почему в голосовалке есть "кто такой Питон?" но нет "кто такой exel?"?

    ну и как бэ

    Код исполняется на серверах Microsoft.

    тонко намекает что ну его нафиг юзать этот ваш exel..


  1. 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 тут в догоняющих


    1. nagayev
      25.10.2023 05:43
      +1

      Это на самом деле довольно ожидаемо, потому что не будет же Либра завязываться на VBS. Как минимум это не будет работать на линуксе.


      1. lazy_val
        25.10.2023 05:43

        OpenOffice еще с каких-то лохматых времен макросы на Python поддерживал, ну и LibreOffice естественно не отстает

        А эти проснулись наконец


    1. Pavel1114
      25.10.2023 05:43

      Excel ещё бы с CSV научиться нормально работать. Хотя наверно это сознательная политика - "используйте наши форматы"


  1. iiigor94
    25.10.2023 05:43

    Удобно если для расчётов нужно парсить какие то данные с сайтов, например текущий курс валют, или обращаться к апи какого либо сервиса, наверное еще фильтрация данных , да много чего интересного думаю можно сделать используя питон в екселе.


  1. andrey_27
    25.10.2023 05:43
    -1

    замечательный Python

    Соболезную всем тем, кто использует этот отброс эволюции...


  1. wolkodav96
    25.10.2023 05:43

    https://youtu.be/ubqsRcCUcB4?si=uqD2IFMfAHxG-ADz ещё пару лет назад вот так развлекались, подрубая питон к экселю.


  1. astentx
    25.10.2023 05:43
    +2

    Для обращений к API и обработки данных довольно давно существует встроенный PowerQuery, неплохо документированный и не громоздкий, намного более читаемый в сравнении с VBA, т.к. функциональный подход в обработке данных позволяет проследить логику. Решение с добавлением питона в таком костыльном виде непонятно для кого: энтерпрайз должен вырезать из соображений безопасности, для себя можно самому поставить локальный питон и делать в нем что надо. Создание каких-то формочек в экселе? Это скорее для контор, где "программист", системный администратор, сетевик и электрик - одно лицо, умеющее пользоваться VBA, чтобы собрать что-нибудь на коленке, и питон ему ни к чему, ну только чтобы быть в тренде и похвастаться знакомым.


    1. Gonchar_POTT Автор
      25.10.2023 05:43

      Вариант «для себя, чтобы для исполнения простого, в несколько строк кода, работающего с данной рабочей книгой, не нужно было вызывать Python и иметь отдельный файл со скриптом», такой сценарий лично для меня становится очень даже рабочим.


  1. economist75
    25.10.2023 05:43
    +3

    COM-либы XLWings и PyXLL дают больше, доступны 5 лет начиная с MSO 2007 и выполняются локально.

    Для LibreOffice есть встроенный и довольно свежий Python, который дает делать все то же, создавать свои UDF и менять документы через UNO (некий аналог COM) c глубокой интроспекцией кода и API LibreOffice.