3698x
001790
2023-01-23

Использование веб-сервиса API в сочетании с EXCEL и Python

Программы для работы с электронными таблицами, такими как MS EXCEL, очень популярны среди инженеров, поскольку позволяют легко автоматизировать вычисления и быстро выводить результаты. Поэтому сочетание MS EXCEL, используемого в качестве графического интерфейса, с веб-сервисом API Dlubal является очевидным выбором. Используя бесплатную библиотеку xlwings для Python, вы можете управлять EXCEL, а также считывать и записывать значения. Функциональность описана ниже на примере.

Подготовка

Для примера и для программирования потребуется следующее:

  • RFEM 6
  • EXCEL
  • Python
  • Dlubal RFEM_Python_Client
  • Библиотека xlwings Python
  • Редактор для написания программы

Предполагая, что RFEM 6, EXCEL и Python уже установлены, следующим шагом будет установка библиотек RFEM_Python_Client. Мы предлагаем различные обучающие видеоролики и справочные страницы с описанием установки. Следующие ссылки особенно важны для установки. Они показывают процесс установки, а также первые шаги в программировании:

В этих видеороликах также рассказывается о программных редакторах. Для данного примера используемый редактор не имеет значения. Затем необходимо установить xlwings, соответствующую информацию можно найти на сайте библиотеки:

Полный код, например, находится в RFEM_Python_Client по следующему пути:

  • RFEM_Python_Client/tree/main/Examples/SteelDesign/

Файл SteelDesignExcel.py - это программа (скрипт) Python, а файл SteelDesignExcel.xlsm - это связанный файл EXCEL.

Пример для программирования

Библиотека xlwings предлагает несколько вариантов сочетания Python и EXCEL. С одной стороны, можно управлять EXCEL из программы Python (более известной как скрипт Python), а также запускать скрипт Python из EXCEL. При запуске из EXCEL вы можете либо использовать встроенный подключаемый модуль, либо создать подпрограмму, которая затем запускает скрипт Python. Подробности показаны здесь:

В нашем примере скрипт Python запускается через встроенный плагин (см. рисунок). Есть два требования. Скрипт Python должен иметь то же имя, что и файл EXCEL, и должен включать в себя основную функцию, поскольку затем эта функция выполняется через подключаемый модуль.
Вот первая часть основной функции:


            

...
# Откройте лист Excel
wb = xw.Book.caller()

# Читать исходные данные
inputSheet = wb.sheets('Inputs')

frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2

# Геометрические исходные данные
frame_number = int(inputSheet["G6"].value)  # number of frames
width = inputSheet["G7"].value # Width of Frame
frame_length = inputSheet["G8"].value # Frame Length
console_height = inputSheet["G9"].value # Height of Console
column_height = inputSheet["G10"].value # Height of Column
gable_height = inputSheet["G11"].value # Height of Gable
...


Если xlwings используется непосредственно из скрипта Python (не через EXCEL), сначала необходимо открыть файл:


            

wb = xw.Book('userSheet.xlsm')


Если xlwings используется вне EXCEL, соединение устанавливается с помощью следующей команды:


            

wb = xw.Book.caller()


Переменная wb включает в себя всю рабочую книгу, из которой можно извлечь отдельные рабочие листы с помощью метода листов (). В этом примере открывается рабочий лист «Входные данные», и доступ к отдельным ячейкам осуществляется с помощью квадратных скобок. Значение ячейки можно прочитать или изменить с помощью свойства 'value'. Эту имплементацию можно найти в конце примера:


            

...
# Запись результатов в выходные листы
nodaldeformation["A2"].value = node_number
nodaldeformation["B2"].value = nodeSupportType
nodaldeformation["C2"].value = nodeDisp_abs
nodaldeformation["D2"].value = nodeDisp_x
nodaldeformation["E2"].value = nodeDisp_y
nodaldeformation["F2"].value = nodeDisp_z
nodaldeformation["G2"].value = nodeRotation_x
nodaldeformation["H2"].value = nodeRotation_y
nodaldeformation["I2"].value = nodeRotation_z
...


В данном случае считывается сочетание нагрузок 7. На рисунке 2 показаны деформации стержней в EXCEL и, для сравнения, результаты RFEM 6 на рисунке 3.

Заключение

На примере видно, что после настройки всех необходимых элементов пользоваться API достаточно просто. EXCEL в основном используется в качестве графического пользовательского интерфейса, и знание Visual Basic для приложений (VBA) не требуется. Также возможно, что расчёты ведутся в EXCEL (также через VBA), а Python только импортирует или экспортирует данные посредством xlwings.


Автор

Г-н Гюнтель осуществляет техническую поддержку пользователей Dlubal Software.

Ссылки