Pour la lecture et l’écriture de données vers un tableur, j’ai choisis le format très mal connu msExcel2003.Xml.
Il a pour moi l’avantage d’être non compressé, et d’être éditable avec n’importe quel éditeur de texte.
Il est également compatible avec oOo.
Dans un article précédent, lecture-de-fichiers-xml-en-lisp, j’ai fournis les sources du kit nécessaire à leur lecture.
PowerClic peut écrire des variables dans ces fichiers xml, et lancer automatiquement Excel ou oOo si ils sont disponibles.
Le format choisi est une espèce de fichier ini dans un tableur. Le nom de la variable est entre crochet, et les valeurs suivent jusqu'à la section (variable) suivante.
Un ; en début de ligne est interprété comme un commentaire
Un petit exemple :
(setq maliste '((1 2 3)("a" "b" "c")))
((1 2 3) ("a" "b" "c"))
Commande: ECRITXML
Nom de la variable à écrire ?<> :maliste
Voilà le résultat :
On remarque que le fichier xml contient un formatage conditionnel qui en facilite grandement la lecture et le commentaire.
Lecture du résultat :
Commande: (setq maliste nil)
nil
Commande: CHARGEXML
"maliste" MALISTE,
"maliste"
Onglet ignoré par pw_charger_table_xml car ne contient pas de table
Les tables ont été placées dans les variables :
Commande:
Commande: !maliste
((1 2 3) ("a" "b" "c"))
Comprendre les messages de chargexml :
Pour créer un exemple de table, j’ai placé les explications dans mon fichier xlm, dans un onglet #matable
En fait, chargexml lit les fichier xml une fois sous forme de fichier ini, et un fois sous forme de table
Les tables ont un nom d’onglet commençant par #. Les têtes de colonne seront des clef d’association.
Maintenant, relançons la commande chargexml sur ce fichier :
Commande: CHARGEXML
"maliste" MALISTE,
"#matable"
Onglet ignoré par pw_charger_xml car contient une table
"maliste"
Onglet ignoré par pw_charger_table_xml car ne contient pas de table
"#matable"
Les tables ont été placées dans les variables :
#matable
Commande: !#matable
((("Message" "Commande: CHARGEXML") ("description")) (("Message" "\"maliste\"
MALISTE,") ("description" "\"maliste\" = nom de l'onglet, MALISTE = nom de la
variable")) (("Message" "\"maliste\"") ("description" "maliste = nom de
l'onglet")) (("Message" "Onglet ignoré par pw_charger_table_xml car ne contient
pas de table") ("description")) (("Message" "Les tables ont été placées dans
les variables :") ("description" "ça reste vide, puisqu'il n'y avait pas de
table")))
;;lecture façon ini
"maliste" MALISTE,
"maliste" = nom de l'onglet, MALISTE = nom de la variable
"#matable"
Onglet ignoré par pw_charger_xml car contient une table
;;lecture façon table
"maliste" MALISTE,
Onglet ignoré par pw_charger_table_xml car ne contient pas de table
"#matable"
"#matable" = nom de l'onglet
Les tables ont été placées dans les variables :
#matable
Les fonctions d’écritures se limitent au format ini.
Une table est sensée être crée sous excel ou oOo
Les tables sont une solution pour lire des liste d’association.
C:CHARGETABLEXML Chargement à partir d'un fichier xml d'une table unique par onglet
C:CHARGEXML Chargement à partir d'un fichier xml de liste de valeurs et de tables
C:ECRITXML appel principal pour écrire une variable dans un fichier Ms XML spécifié par l'utilisateur
C:FREEXML libère le fichier xml après une erreur
C:XMLEXPLORE charge un fichier xml dans le but de l'explorer et d'afficher sa structure à l'écran