# Exporter un essai

> Les copies transportables et le PDF généré d'un essai : ce qu'exige chaque verbe, comment les fichiers sont nommés, et exactement ce que contiennent un CSV, un XLSX, un GLAB et un PDF.

La bande au-dessus de l'essai ouvert porte d'abord les copies transportables, puis les documents
générés ([Le dossier d'essai](histories-record#the-strip)). Les quatre verbes ci-dessous demandent la
permission **Exporter/importer les historiques**, et tous les quatre sont des lectures du fichier
d'essai : ils restent disponibles pendant que le runtime est arrêté et pendant qu'une unité
enregistre, et aucun d'eux n'écrit quoi que ce soit dans l'essai.

La bande porte un cinquième verbe, **Nouvelle étiquette**, qui n'est ni un export ni une lecture : il
émet une étiquette dans l'essai et y est enregistré comme preuve de son émission, donc il demande
**Exécuter les procédures** au lieu de la permission d'export et il est décrit avec les documents
auxquels il appartient ([Étiquettes et rapports](histories-documents)).

| Verbe | Produit | Disponible pour | Aboutit |
| --- | --- | --- | --- |
| Exporter en CSV | Le datalog brut sous forme de texte. | Tout essai, y compris un essai qui enregistre encore. | Un téléchargement du navigateur, dans la fenêtre propre à la station également (« CSV exporté · fichier »). |
| Exporter en XLSX | Un classeur Excel avec l'identité de l'essai, les métadonnées et le datalog typé. | Tout essai, y compris un essai qui enregistre encore ; un essai qui n'a encore rien enregistré répond « L'essai n'a pas encore d'instantané d'en-tête. Réessayez dans un instant. » | Un téléchargement du navigateur (« XLSX exporté · fichier »). |
| Exporter en GLAB | L'essai entier sous forme d'un seul fichier `.glab` transportable qu'une autre station peut importer. | Uniquement les essais Terminés, Interrompus ou En échec. | Un téléchargement du navigateur (« GLAB exporté · fichier (taille) »). |
| Générer le PDF | Un rapport PDF frais composé à partir de tout l'essai, avec la mise en page que le sélecteur choisit. | Tout essai qui a fini d'enregistrer. | Le dossier des rapports de la racine de données, puis il est ouvert. |

Un export CSV ou XLSX en cours d'essai est une copie partielle cohérente : l'en-tête figé est écrit
au démarrage de l'essai, donc l'export porte le jeu complet de colonnes et les lignes enregistrées
jusque-là, lues à travers l'enregistrement en cours plutôt que par une seconde connexion au fichier.
Chaque date et chaque heure d'un export suivent le format configuré dans
[Paramètres](settings-localization), et chaque fichier déclare la référence dans laquelle ses
horodatages se lisent : « UTC » ou « UTC±hh:mm », le décalage de la station au moment de l'export.

## Noms de fichier {#file-names}

CSV, XLSX, GLAB et PDF partagent un même nom de base par essai : l'instant de démarrage au format de
date et d'heure de la station avec des séparateurs compatibles avec un nom de fichier, puis les noms
du modèle, de l'unité et de la procédure (« 02-09-2026 14-05-30 - Chambre climatique - Unité 1 -
Essai de palier »), chaque partie raccourcie à 48 caractères et débarrassée des caractères que
Windows refuse. La base est réservée durablement, donc des exports répétés d'un même essai gardent le
même nom d'un redémarrage à l'autre, et seul un essai différent qui tomberait sur le même nom reçoit
un court suffixe tiré de son identité. Un rapport émis par une action ajoute le nom du groupe après
la base ; un PDF généré ici garde la base simple. Chaque fichier est achevé sous un nom temporaire et
publié seulement une fois complet, donc un export annulé ne laisse jamais un fichier partiel portant
l'extension du produit.

## CSV {#csv}

Une colonne **Timestamp**, intitulée « Timestamp (UTC-03:00) » avec la référence de temps, puis, par
voie enregistrée et dans l'ordre de colonnes figé, une colonne de valeur intitulée par le nom que
l'essai a figé pour cette colonne, l'alias en vigueur sur l'unité ou le nom de la voie quand il n'y
en avait pas, avec son unité physique entre crochets (« Temperature [°C] ») et, à côté, une colonne
de qualité (« Temperature [°C] Quality ») qui indique **Good** ou **Unavailable**. Cet en-tête est
le nom que le graphique et le rapport de l'essai donnent à la même colonne. La colonne de valeur
garde ce que le datalog a enregistré (vide quand il n'y avait rien), les booléens se lisent
`true`/`false`, une voie de type date se lit au format de la station, et une valeur qui contient le
séparateur, un guillemet ou un saut de ligne est mise entre guillemets. Une cellule de texte qui
commence par `=`, `+`, `-` ou `@` est préfixée d'une apostrophe pour qu'un tableur la lise comme du
texte et non comme une formule : les noms de colonne de l'en-tête et les lectures d'une voie de type
texte, qui viennent de l'équipement. Les nombres ne sont jamais préfixés, donc une lecture négative
reste un nombre.

Le fichier suit la préférence de séparateur décimal de la station : avec le point décimal, le
séparateur de liste est `,` ; avec la virgule décimale, c'est `;`, de sorte que le fichier s'ouvre
proprement dans un tableur de cette langue. Les nombres sont écrits sans séparateur de milliers, à la
précision entière conservée par le datalog. Le texte est en UTF-8.

## XLSX {#xlsx}

Le classeur s'ouvre sur une feuille **Run**, de deux colonnes intitulées Field et Value :

| Champ | Contenu |
| --- | --- |
| Run ID | L'identité unique de l'essai. |
| Run Name, Model, Model Revision, Unit, Procedure | Les noms figés au moment de l'enregistrement de l'essai ; un champ pour lequel l'essai n'a pas de valeur reste vide. |
| Started At, Finished At | Les bornes de l'essai. Un essai qui enregistre encore indique **In progress** dans Finished At. |
| Time Zone | La référence dans laquelle se lit chaque instant du classeur. |
| State | L'état du cycle de vie au moment de l'export. |
| Result | Le verdict (OK, NOK, Indeterminate ou None), ou **In progress** tant que l'essai enregistre encore. |
| Termination | None, ou StopInterlock. |
| Interval (ms) | L'intervalle d'enregistrement. |
| Imported At, Imported From | Uniquement sur une copie importée d'une autre installation : quand elle est arrivée ici et le fichier reçu dont elle vient. Un essai enregistré ici ne porte aucune de ces deux lignes. |
| Notes | Les notes de l'essai. |

Un second en-tête, Metadata et Value, suit avec une ligne par champ de métadonnées enregistré au
Démarrage, dans l'ordre des invites. Une ou plusieurs feuilles **Datalog** viennent ensuite, dans le
même ordre de colonnes et sous les mêmes en-têtes de voie que le CSV, avec la ligne d'en-tête figée,
un filtre automatique sur chaque feuille et sans quadrillage. Un datalog plus long que la limite de
1 048 576 lignes par feuille d'Excel se divise tout seul en **Datalog 2**, **Datalog 3** et ainsi de
suite, chacune avec son propre en-tête.

Les valeurs sont écrites en cellules typées : les entiers et les décimaux finis en nombres natifs, à
la précision entière conservée par le datalog, et les booléens en TRUE/FALSE natifs. Excel lui-même
travaille avec 15 chiffres significatifs au plus, donc les chiffres au-delà n'y sont pas montrés,
même si le fichier les porte. Une lecture non finie, une voie de type date et les horodatages sont du
texte ; une lecture dont la qualité est **Unavailable** laisse sa cellule de valeur vide, la colonne
de qualité le disant. Un essai qui exigerait plus que les 16 384 colonnes d'Excel, ou une cellule de
texte au-delà de sa limite de 32 767 caractères, est refusé avec la raison plutôt que de produire un
classeur tronqué.

## GLAB {#glab}

Le fichier `.glab` est une copie cohérente, au niveau des pages, du fichier SQLite propre à l'essai,
prise à chaud : pas d'enveloppe d'archive, pas de manifeste, pas de documents dérivés et pas de PDF
publié. Il porte tout ce que porte le fichier d'essai : l'instantané figé, les lignes, les
métadonnées, les écritures de recette, les critères, les occurrences, les commentaires, les
annotations, les enregistrements de production, les artefacts d'étiquette avec leurs octets figés et
les enregistrements de rapport avec la copie qu'ils ont gardée. Il emploie le même nom de base que
les autres exports et n'est publié qu'une fois complètement écrit. Une autre station le reprend par
[Importer des essais](histories-import).

## PDF {#pdf}

**Générer le PDF** compose le rapport avec la mise en page que le sélecteur à côté de lui choisit.
« (rapport de la procédure) » est la mise en page que nomme aujourd'hui la première commande de
rapport de fin de la procédure, dans l'ordre d'émission (sa première commande de démarrage quand elle
n'en émet aucune à la Fin) ; une procédure disparue ou qui n'émet aucun rapport, et une mise en page
supprimée, retombent sur la mise en page par défaut à toutes les sections, donc une régénération
survit à la configuration. Toute autre mise en page de la bibliothèque peut être choisie à la place,
parce que le fichier d'essai se suffit à lui-même. Le PDF est publié dans le dossier des rapports
sous le nom de base simple de l'essai, en remplaçant le rendu manuel précédent, et il n'enregistre
rien sur l'essai.

Dans la fenêtre propre à la station, le PDF terminé s'ouvre dans la visionneuse PDF du système, avec
un repli sur un téléchargement du navigateur quand cela échoue (« Impossible d'ouvrir le rapport. Il
est téléchargé à la place. ») ; dans un navigateur, local ou distant, il s'ouvre dans un nouvel
onglet. Ce que contiennent les pages est décrit sur
[Mises en page de rapport](process-reports#what-the-pdf-prints). Le rapport déjà enregistré pour un
essai se réémet plutôt depuis [Étiquettes et rapports](histories-documents), qui ne le compose jamais
de nouveau.
