Un calcul Excel exposé sans coder
Si votre calcul est déjà dans une feuille Excel — formules, références
de cellules, table de paramètres — vous n’avez pas besoin de le
réécrire en Python pour le publier sur MecaPy. Une fonction générique,
xlsx_solver, fait tourner votre feuille côté serveur. Un workflow
l’enrobe et expose les ports que vous décidez. Le résultat se lance
comme n’importe quelle autre fonction du catalogue.
Le principe
Section intitulée « Le principe »xlsx_solver est une « boîte noire » paramétrable :
- elle prend en entrée un classeur
.xlsx, un dictionnaire de valeurs, et deux tables de correspondance :input_map(« quelle variable va dans quelle cellule ? ») etoutput_map(« quelle cellule donne quelle sortie ? ») ; - elle évalue les formules de la feuille (en pur Python, sans LibreOffice) ;
- elle renvoie un dictionnaire
resultslu depuis les cellules désignées paroutput_map.
Le workflow qui l’enrobe vous laisse définir vos propres ports
d’entrée typés — Length, Force, File, … — et de les router vers
xlsx_solver via les deux tables. À l’arrivée, votre workflow se
comporte comme une fonction normale.
Le squelette du workflow
Section intitulée « Le squelette du workflow » ┌──────────────────────────────────────┐ │ xlsx_solver │ template │ inputs template │ (File .xlsx) ─┼─► │ │ inputs │ diameter │ ┌── inputs (Object) ──┐ │ (Length) ────┼──► │ { F: 1200, │ │ force │ │ d: 0.012 } │ │ (Force) ────┼──► └──────────────────────┘ │ │ │ │ input_map (Object, constante) │ │ { "F": "Calc!B2", │ │ "d": "Calc!B3" } │ │ │ │ output_map (Object, constante) │ │ { "sigma": "Calc!E10" } │ │ │ │ outputs ► results ── { sigma: … } ──┼─► sigma_eq (Stress) └──────────────────────────────────────┘Les nœuds d’entrée sur la gauche (template, diameter, force)
sont vos paramètres — c’est ce que verra l’utilisateur du workflow
dans son formulaire. Les constantes input_map / output_map
sont fixées une fois pour toutes dans le workflow : elles décrivent
votre feuille, et pas celle de l’utilisateur final.
-
Préparez la feuille. Choisissez des cellules dédiées aux entrées (par exemple
Calc!B2pour le diamètre) et aux sorties (Calc!E10pour la contrainte). Les formules entre les deux restent ce qu’elles sont —xlsx_solverles évalue telles quelles. -
Créez un workflow depuis l’interface.
-
Ajoutez un nœud
core/xlsx_solver(la fonction est fournie par le packagecoredu catalogue). -
Câblez
templateetinputsvers les nœuds d’entrée que vous voulez exposer à l’utilisateur. Pourinputs, utilisez un nœud « construire un Object » qui regroupe vos variables sous les noms que vous attendez côté tableau. -
Renseignez
input_mapetoutput_mapen valeurs constantes dans le workflow (la table de correspondance pointe sur votre feuille, vous la connaissez). -
Exposez les sorties de
resultssur les ports de sortie du workflow, typés comme vous le voulez (unStress, unForce, …). -
Sauvegardez le workflow et lancez-le : votre utilisateur ne voit plus que les paramètres que vous avez choisis.
Quand ne pas l’utiliser
Section intitulée « Quand ne pas l’utiliser »xlsx_solver est volontairement strict — il refuse les classeurs qui
contiennent des fonctions volatiles (NOW, RAND, OFFSET, …) pour
garantir des résultats reproductibles d’un run à l’autre. Si votre
feuille dépend de l’heure courante ou tire des nombres aléatoires,
il faudra l’adapter (ou écrire un vrai package).
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Workflows — la documentation complète sur la composition de fonctions.
- Déployer un package — quand vous serez prêt à publier votre propre fonction, sans passer par Excel.