70x
004331
2023-01-23

KB 001790 | Korzystanie z WebService API w połączeniu z programami EXCEL i Python

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:

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:


            

...
#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:


            

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 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 ...