4019x
001790
23.01.2023

Utilisation de l'API du service web avec EXCEL et Python

Les tableurs comme EXCEL sont très appréciés des ingénieurs car ils permettent d'automatiser facilement les calculs et d'obtenir des résultats rapidement. La connexion entre EXCEL en tant qu'interface graphique et l'API du service web de Dlubal est donc évidente. La bibliothèque gratuite xlwings pour Python permet de contrôler EXCEL, de lire et d'écrire des valeurs. Cette fonctionnalité est expliquée ci-dessous à l'aide d'un exemple.

Préparation

Les éléments suivants sont requis pour cet exemple et la programmation :

  • RFEM6
  • EXCEL
  • Python
  • Dlubal RFEM_Python_Client
  • Une bibliothèque Python xlwings
  • Un éditeur pour écrire le programme

En supposant que RFEM 6, EXCEL et Python soient déjà installés, l'étape suivante consiste à installer les bibliothèques RFEM_Python_Client. Nous mettons à votre disposition différentes vidéos d'apprentissage et pages d'aide à cet effet. Les liens suivants sont particulièrement importants pour l'installation. Ils montrent l'installation et les premières étapes de la programmation :

Les éditeurs de programmes sont également abordés dans ces vidéos. Pour cet exemple, l'éditeur utilisé n'a pas d'importance. Ensuite, xlwings doit être installé. Vous trouverez des informations à ce sujet sur le site Web de la bibliothèque :

Le code complet, par exemple, se trouve dans RFEM_Python_Client à l'emplacement suivant :

  • RFEM_Python_Client/tree/main/Examples/SteelDesign/

Le fichier SteelDesignExcel.py est le programme Python (script) et SteelDesignExcel.xlsm est le fichier EXCEL associé.

Exemple de programmation

La bibliothèque xlwings offre plusieurs options pour combiner Python et EXCEL. D'une part, il est possible de contrôler EXCEL à partir d'un programme Python (plus connu sous le nom de script Python) et également de démarrer un script Python à partir d'EXCEL. Lorsque vous démarrez à partir d'EXCEL, vous pouvez soit utiliser le plug-in intégré, soit créer une sous-routine qui démarre le script Python. Les détails peuvent être consultés ici :

Dans cet exemple, le script Python est lancé via le plugin intégré (voir la figure). Cette utilisation est soumise à deux exigences. Le script Python doit avoir le même nom que le fichier EXCEL et doit contenir une fonction principale, car celle-ci est ensuite exécutée via le plugin.
Voici la première partie de la fonction principale :


            

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


Si xlwings est utilisé directement à partir d'un script Python (et non via EXCEL), un fichier doit d'abord être ouvert :


            

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


Si vous utilisez EXCEL, la connexion est établie à l'aide de la commande suivante :


            

wb = xw.Book.caller()


La variable wb contient le classeur (workbook) complet, à partir duquel les feuilles de calcul individuelles peuvent être extraites à l'aide de la méthode sheets(). Dans cet exemple, la feuille de calcul « Inputs » est ouverte et les cellules individuelles sont accessibles à l'aide des crochets. La valeur d'une cellule peut être lue ou modifiée à l'aide de la propriété « value ». Cette implémentation se trouve à la fin de l'exemple :


            

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


Dans ce cas précis, la combinaison de charges 7 est lue. La Figure 2 montre les déformations des barres dans EXCEL et, à titre de comparaison, les résultats de RFEM 6 dans la Figure 3.

Résumé

Cet exemple prouve qu'une fois tous les éléments nécessaires configurés, il est relativement simple d'utiliser l'API. EXCEL est principalement utilisé comme une interface utilisateur graphique et aucune connaissance de VBA n'est requise. Il est également possible que les calculs soient effectués dans EXCEL (également via VBA) et Python avec xlwings uniquement pour l'importation ou l'exportation de données.


Auteur

M. Günthel fournit une assistance technique aux clients de Dlubal Software.

Liens