Aller au contenu principal

Export Excel

Le problème

Les opérateurs veulent un XLSX de la vue filtrée courante (ou d'un agrégat fixe) — pour analyse hors ligne, pour conformité, pour transmission à quelqu'un qui n'a pas accès au système.

Le modèle

Le framework offre trois niveaux d'export Excel, par ordre croissant d'effort :

NiveauCe que vous faitesCe qui est livré
1. GratuitRien.Chaque écran a un bouton ⬇ Exporter qui télécharge la vue filtrée courante en <screen>.xlsx.
2. PersonnaliséChoisir les colonnes qui apparaissent dans l'export.Même bouton, mais avec les colonnes que vous voulez — y compris les colonnes masquées par défaut dans la grille.
3. Planifié / modèleAjouter un job Nomaflow + une étape HTTP qui appelle l'endpoint d'export et envoie le résultat par email.Un email nocturne avec le XLSX en pièce jointe.

Niveau 1 — l'export par défaut

Il est déjà là. Ouvrez n'importe quel écran, cliquez sur ⬇ Exporter dans la barre d'outils, le XLSX se télécharge.

L'export respecte :

  • Chaque filtre actif (le fichier a les mêmes lignes que la grille à l'écran).
  • L'ordre de tri courant.
  • Les colonnes visibles et les colonnes masquées mais disponibles dans le catalogue avec la bascule Inclure dans l'export activée.
  • La locale de l'utilisateur (formats de date, séparateurs de nombres, langue des libellés).

Rien à configurer sauf si le niveau 2 s'applique.

Niveau 2 — personnaliser la liste de colonnes

Par défaut, l'export contient chaque colonne visible de la grille. Pour modifier :

  1. Ouvrez Paramètres → Écrans → <votre écran> → onglet Grille.
  2. Pour chaque colonne, l'éditeur a une bascule Visible et une bascule Inclure dans l'export. Elles sont indépendantes.
  3. Activez Inclure dans l'export pour les colonnes qui doivent atterrir dans le XLSX même si elles sont masquées dans la grille (cas typique : id, created_by, updated_at).

Enregistrer et recharger. Le prochain clic ⬇ Exporter reflète le nouvel ensemble de colonnes.

Niveau 3 — un rapport Excel planifié

Pour un rapport récurrent — par ex. « chaque lundi à 08:00, envoyer les ventes de la semaine précédente en XLSX à l'équipe de direction » — combinez un job Nomaflow + une étape HTTP.

Construire le job

Paramètres → Jobs → + Nouveau job :

ChampValeur
Nomweekly-sales-export
Schedule0 8 * * 1 (Lundis à 08:00)
TimezoneEurope/Paris

Étape 1 — rendre le XLSX

Type : HTTP. Variante : Connector endpoint.

ChampValeur
Connecteurliberty-self (la surface REST du framework lui-même)
Endpointscreens.export
Paramètresapp = crm, screen_id = deals, from_date = ${week.monday}, to_date = ${week.sunday}

L'endpoint renvoie un XLSX en application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. L'étape l'enregistre comme un blob binaire.

Étape 2 — envoyer le XLSX par email

Type : HTTP. Variante : Raw URL.

ChampValeur
MéthodePOST
URLVotre wrapper HTTP de relais SMTP, ou utilisez la configuration Paramètres → Framework → Notifications → SMTP
Body{ "to": "ops@example.com", "subject": "Ventes hebdomadaires", "attachment": "${previous_step.body}" }

Enregistrer et tester

Cliquez sur ▶ Exécuter maintenant dans le constructeur de job pour vérifier sans attendre lundi. L'historique d'exécution montre les deux étapes, le blob attaché, la réponse du serveur d'email.

Variantes

Vous voulez…Faites ceci
Un export agrégé, pas un dump ligne à ligneÉcrivez une vue SQL (vw_weekly_sales) qui fait l'agrégation, construisez un connecteur + un écran au-dessus de la vue, désactivez Editable sur l'écran, exportez les lignes de la vue.
Un PDF au lieu d'un XLSXLes écrans n'exportent pas nativement en PDF ; la feuille de style d'impression du framework gère du HTML imprimable. Pour un vrai PDF, le tableau de bord crm-pipeline-overview a un bouton ⬇ Exporter PDF par défaut.
Un CSV au lieu d'un XLSXL'endpoint accepte ?format=csv — même job, paramètre différent.
Que le destinataire télécharge depuis un lien plutôt qu'une pièce jointeL'étape 1 reste la même. L'étape 2 devient une étape qui upload le blob vers S3 / Azure / Google Drive et envoie le lien par email. Étape Python personnalisée.

Pour aller plus loin