Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
28 avril 2014 1 28 /04 /avril /2014 12:47

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.

 

Ecriture d'une valeur liste

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")))

 

Explication des messages de chargexml :

;;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

 

Conclusion

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.

 

Liste des commandes xml :

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

g-eaux

 

 

Partager cet article
Repost0

commentaires