Temat:
Korzystanie z WebService API w połączeniu z programami EXCEL i Python
Uwagi:
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. Połączenie programu MS EXCEL jako graficznego interfejsu użytkownika z WebService API jest zatem oczywiste. Za pomocą bezpłatnej biblioteki xlwings dla Pythona można sterować programem EXCEL oraz odczytywać i zapisywać wartości. Funkcjonalność tę wyjaśniono zatem poniżej na przykładzie.
Opis:
Przygotowania
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, należy najpierw zainstalować biblioteki 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ą one instalację i pierwsze kroki w programowaniu:
- https://dlubal-software.github.io/.github/guide/
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003477
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003478
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003479
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/tree/main/Examples/SteelDesign/
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:
- code.de#
...
- Otwórz arkusz Excela
wb = xw.Book.caller()
- Odczytaj dane wejściowe
inputSheet = wb.sheets('Inputs')
frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2
- Wkłady geometryczne
numer_klatki = int (inputSheet ["G6"]. wartość) #liczba klatek
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:
- code.de#
wb = xw.Book('userSheet.xlsm')
- /#
W przypadku korzystania z programu EXCEL połączenie jest nawiązywane za pomocą następującego polecenia:
- code.de#
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:
- code.de#
...
- Zapisywanie wyników na arkuszach wyjściowych
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
W przykładzie ...