4473x
001790
2023-01-23

Korzystanie z Webservice API w połączeniu z programami EXCEL i Python

Programy do arkuszy kalkulacyjnych, takie jak EXCEL, są popularne wśród inżynierów, ponieważ można z łatwością zautomatyzować obliczenia i szybko uzyskać wyniki. Dlatego połączenie MS EXCEL jako interfejsu graficznego z Webservice API firmy Dlubal jest oczywistym wyborem. Za pomocą bezpłatnej biblioteki xlwings dla Pythona można sterować programem EXCEL oraz odczytywać i zapisywać wartości. Funkcjonalność tę wyjaśniono poniżej na przykładzie.

Przygotowanie

Dla omawianego przykładu i do programowania wymagane jest:

  • RFEM 6
  • EXCEL
  • Python
  • Dlubal RFEM_Python_Client
  • Biblioteka Pythona xlwings
  • Edytor do pisania programu

Zakładając, że programy RFEM 6, EXCEL i Python są już zainstalowane, następnym krokiem jest zainstalowanie bibliotek RFEM_Python_Client. Oferujemy różne filmy instruktażowe i strony z pomocnymi wskazówkami, jak przeprowadzić instalację. Poniższe linki są szczególnie ważne podczas instalacji. Pokazują instalację oraz pierwsze kroki w programowaniu:

W tych filmach omówiono również edytory programów. W niniejszym przykładzie użyty edytor nie ma znaczenia. Następnie należy zainstalować xlwings, odpowiednie informacje można znaleźć na stronie internetowej biblioteki:

Na przykład kompletny kod znajduje się w RFEM_Python_Client w następującej ścieżce:

  • RFEM_Python_Client/drzewo/główne/Przykłady/Wymiarowanie stali/

Plik SteelDesignExcel.py jest programem (skryptem) w języku Python, a plik SteelDesignExcel.xlsm jest powiązanym plikiem EXCEL.

Przykład programowania

Biblioteka xlwings oferuje kilka opcji łączenia języków Python i EXCEL. Z jednej strony można sterować programem EXCEL za pomocą programu w języku Python (lepiej znanym jako skrypt w języku Python), a także uruchamiać skrypt w tym języku za pomocą programu Excel. Podczas uruchamiania programu EXCEL można użyć wbudowanej wtyczki lub utworzyć podprogram, który następnie uruchomi skrypt w języku Python. Szczegóły są pokazane tutaj:

W naszym przykładzie skrypt w języku Python jest uruchamiany za pomocą wbudowanej wtyczki (patrz ilustracja). Istnieją dwa wymagania. Skrypt w języku Python musi mieć taką samą nazwę jak plik EXCEL i musi zawierać główną funkcję, ponieważ funkcja ta jest następnie realizowana za pośrednictwem wtyczki.
Oto pierwsza część głównej funkcji:


            

...
# Open the excel sheet
wb = xw.Book.caller()

# Read inputs
inputSheet = wb.sheets('Inputs')

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

# Geometric Inputs
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
...


Jeśli xlwings jest używany bezpośrednio ze skryptu Python (nie za pomocą programu EXCEL), najpierw należy otworzyć plik:


            

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


W przypadku korzystania z programu EXCEL połączenie jest nawiązywane za pomocą następującego polecenia:


            

wb = xw.Book.caller()


Zmienna wb zawiera kompletny skoroszyt, z którego można wyodrębnić poszczególne arkusze za pomocą metody sheets(). W tym przykładzie otwarty jest arkusz "Wprowadzania danych", a dostęp do poszczególnych komórek uzyskuje się za pomocą nawiasów kwadratowych. Wartość komórki można odczytać lub zmodyfikować za pomocą właściwości 'value'. Tę implementację można znaleźć na końcu przykładu:


            

...
# Zapisywanie wyników w arkuszach wyników
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
...


W tym przypadku odczytywana jest kombinacja obciążeń 7. Rysunek 2 przedstawia odkształcenia prętów w programie EXCEL oraz, dla porównania, wyniki z programu RFEM 6 na rysunku 3.

Podsumowanie

Przykład pokazuje, że po skonfigurowaniu wszystkich niezbędnych elementów korzystanie z API jest dość łatwe. EXCEL jest używany głównie jako graficzny interfejs użytkownika, a znajomość Visual Basic for Applications (VBA) nie jest wymagana. Możliwe jest również, że obliczenia są przeprowadzane w programie EXCEL (również poprzez VBA) i Pythonie, a xlwings tylko importuje lub eksportuje dane.


Autor

Pan Günthel zapewnia wsparcie techniczne klientom firmy Dlubal Software i zajmuje się ich zapytaniami.

Odnośniki