engineering · 2026-09-13

Dans un format de nombre Excel, une lettre nue est une date

Un classeur passait tous les contrôles de structure, dix-sept fragments, XML bien formé, aucun indice hors plage, et Excel le réparait quand même à l’ouverture. Le défaut tenait en une ligne et trois lettres.

Écrit et couvert par des tests, pas encore observé en exécution réelleDeskworth · publié · mis à jour · 1 source · Deskworth OS 0.0.32 · report at 9c436b9

Le fichier était structurellement parfait. Chaque type déclaré présent, chaque feuille en ordre, chaque style et chaque chaîne partagée dans les bornes, et un lecteur indépendant en a extrait huit feuilles et cinquante-quatre formules sans broncher. Excel l’a réparé quand même 1.

#La ligne

format!("#,##0;({devise} #,##0)").replace("{devise} ", "")

`format!` avait déjà interpolé la devise, donc le remplacement cherchait une chaîne qui n’existait plus. Le format de nombre écrit dans le fichier était `#,##0;(USD #,##0)`. À l’intérieur d’un code de format de nombre, une lettre hors guillemets est un jeton : D est le jour, S la seconde. Trois jetons de date au milieu d’une section numérique, et le tableur tient le style pour abîmé 1.

#Ce qui a changé

  1. La devise a quitté le format pour l’en-tête de colonne, « valeur (USD, millions) ».
  2. Une garde lit les octets que le moteur produit et refuse tout format de nombre portant une lettre hors guillemets. Elle a été vue rouge sur l’ancien code avant que le correctif n’entre.
  3. Les formules nomment désormais ce qu’elles additionnent : quatre-vingt-seize noms définis, un par fait, hypothèse et calcul, et un nom qui ressemble à une adresse de cellule est refusé.

LimiteLe correctif est écrit et couvert par des tests. Ouvrir le classeur corrigé dans Excel, sur la machine où l’erreur a été vue pour la première fois, n’a pas encore été fait par le cœur, et ce site n’a pas importé les captures du 0.0.32 qui le montreraient.

#Sources

  1. Deskworth OS, handover report 0.0.32, the notch, deliverables and the companionDeskworthinternal handover report · Deskworth OS 0.0.32 · report at 9c436b9 · not imported by this site (contract refused 2026-09-13) · publié 2026-09-12 · lu 2026-09-13Document interne, non publié

Read next