5119x
001790
23.1.2023

Použití Webové služby API ve spojení s programy EXCEL a Python

Tabulkové programy jako EXCEL jsou mezi inženýry velmi oblíbené, protože umožňují snadnou automatizaci výpočtů a rychlé získání výsledků. Propojení EXCELu jako grafického uživatelského rozhraní a Webové služby API je tak nasnadě. Pomocí volně dostupné knihovny xlwings pro Python můžete ovládat EXCEL, číst a zapisovat hodnoty. Tato funkce je proto níže vysvětlena na příkladu.

Příprava

Pro příklad a programování je potřeba:

  • RFEM 6
  • EXCEL
  • Python
  • Dlubal RFEM_Python_Client
  • Pythonovská knihovna xlwings
  • Editor pro psaní programu

Za předpokladu, že již máme nainstalované programy RFEM 6, EXCEL a Python, je dalším krokem instalace knihoven RFEM_Python_Client. Nabízíme k tomu různá výuková videa a stránky nápovědy. Následující odkazy jsou pro instalaci zvláště důležité. Ukazují instalaci a první kroky při programování:

Ve videích se také mluví o editorech pro programování. Pro tento příklad není důležité, který editor se použije. Nakonec je třeba nainstalovat xlwings, informace k tomu najdete na webových stránkách knihovny:

Kompletní kód příkladu se nachází v RFEM_Python_Client na následující adrese:

  • RFEM_Python_Client/tree/main/Examples/SteelDesign/

Soubor SteelDesignExcel.py je program (skript) v jazyce Python a soubor SteelDesignExcel.xlsm je příslušný soubor EXCEL.

Příklad programování

Knihovna xlwings nabízí několik možností, jak zkombinovat Python a EXCEL. Jednak je možné ovládat EXCEL z programu v Pythonu (známějšího jako Python skript) nebo lze také spustit Python skript z EXCELu. Při spouštění z EXCELu můžete buď použít vestavěný plugin, nebo vytvořit subroutinu, která pak spustí Python skript. Podrobnosti si můžete prohlédnout zde:

V příkladu je použita varianta, ve které se Python skript spouští pomocí vestavěného pluginu (viz obrázek). Pro toto použití jsou nutné dva předpoklady. Skript v Pythonu se musí jmenovat stejně jako soubor EXCEL a musí obsahovat funkci main, která se pak provádí prostřednictvím pluginu.
Zde je první část funkce main:

…
# 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"]. hodnota # Výška konzoly
column_height = inputSheet["G10"].value # Height of Column
gable_height = inputSheet["G11"].value # Height of Gable
…

Pokud použijete xlwings přímo z Python skriptu (nikoli přes EXCEL), je třeba nejprve otevřít soubor:

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

Pokud se používá spuštění z EXCELu, naváže se pomocí následujícího příkazu:

wb = xw.Book.caller()

Proměnná wb obsahuje kompletní sešit (Workbook), ze kterého lze metodou sheets() extrahovat jednotlivé listy. V našem příkladu se otevře list "Inputs" a jednotlivé buňky jsou přístupné pomocí hranatých závorek. Hodnotu buňky lze načíst nebo upravit pomocí vlastnosti value. Tuto implementaci najdete na konci příkladu:

…
# Writing Results to Output Sheets
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
…

V tomto konkrétním případě se načte kombinace zatížení 7. Na obrázku 1 jsou znázorněny deformace prutů v programu EXCEL a pro srovnání výsledky z programu RFEM 6 na obrázku 2.

Závěr a výhled

Na příkladu je vidět, že po nastavení všech potřebných prvků je ovládání poměrně snadné. EXCEL se používá především jako grafické uživatelské rozhraní a znalost VBA není nutná. Je také možné, že výpočty se provedou v programu EXCEL (i přes VBA) a Python pomocí xlwings pouze importuje nebo exportuje data.


Autor

Ing. Günthel zajišťuje technickou podporu zákazníkům.

Odkazy


;