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.
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é
- La devise a quitté le format pour l’en-tête de colonne, « valeur (USD, millions) ».
- 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.
- 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
- Deskworth OS, handover report 0.0.32, the notch, deliverables and the companionDeskworthDocument interne, non publié
Read next