1 OpenXml_Begin
Prototype : int OpenXml_Begin()
Chargement et initialisation de la dll DhdivaltoOpenXML.dll.
Renvoie :
0 - si pas d'erreur
1 - si la dll n'existe pas
2 - si une fonction n'existe pas, par exemple si la dll est d'une ancienne version
3 - si erreur d'initialisation
2 OpenXml_End
Prototype : int OpenXml_End()
Fin de l'utilisation et libération de la dll DhdivaltoOpenXML.
Renvoie toujours 0
3 OpenXml_FileOpen
Prototype : int OpenXml_FileOpen(fic,creation)
Chargement d'un fichier xlsx.
Paramètres :
1 fic A; nom du fichier xlsx avec son chemin
1 creation X = 0; 0=ne pas créer le fichier s'il n'existe pas ; 1=le créer s'il n'existe pas
Renvoie :
0 - si pas d'erreur
1 - si erreur
4 OpenXml_FileClose
Prototype : int OpenXml_FileClose()
Fermeture du fichier xlsx en cours.
Sauvegarde du fichier. L'écriture des données dans le fichier se fait uniquement par l'appel à cette fonction.
Renvoie :
0 - si pas d'erreur
1 - si erreur
5 OpenXml_ColumnWidth
Prototype : int OpenXml_ColumnWidth(colonne,taille)
Changement de la taille d'une colonne (unité de mesure Excel, 10 par défaut).
Paramètres :
1 colonne N; Numéro de la colonne
1 taille N; Nouvelle taille de la colonne
Renvoie :
0 - si pas d'erreur
6 OpenXml_GotoSheet
Prototype : string OpenXml_GotoSheet(feuille,creation)
Gestion des feuilles de calcul selon la valeur du paramètre création.
Paramètres :
1 feuille A ; Nom de la feuille
1 creation X = 0 ; Type d'opération
Renvoie :
Le nom de la feuille en cours si pas d'erreur
"1" si erreur
Types d'opération (si le nom de la feuille n'est pas vide) :
0 retour = OpenXml_GotoSheet("xxx" , 0)
Si la feuille xxx n'existe pas, une erreur sera détectée.
1 retour = OpenXml_GotoSheet("xxx" , 1)
Si la feuille xxx n'existe pas, une feuille vide est créée.
Si le nom de la feuille est vide, la fonction retourne des informations sur la feuille courante (voir OpenXml_CurrentSheet). retour = OpenXml_GotoSheet (" " ,0)
7 OpenXml_DeleteSheet
Prototype : string OpenXml_DeleteSheet(feuille)
Supprime la feuille dont le nom est indiqué en paramètre.
Attention, il faut que la feuille à supprimer soit « simple » car yopenxml ne gère pas les feuilles « complexes » (contenant du graphique etc.).
Si la feuille à supprimer est la feuille en cours, on va sur la première feuille et s'il n'y a plus de feuille, on crée une feuille vierge et on se positionne dessus.
Paramètre :
1 feuille A ; Nom de la feuille
Renvoie :
Le nom de la feuille en cours si pas d'erreur
"1" si erreur
8 OpenXml_CopySheet
Prototype : string OpenXml_CopySheet(feuille)
Duplique la feuille en cours à la fin des feuilles et lui donne le nom passé en paramètre.
Attention, il faut que la feuille à dupliquer soit « simple » car yopenxml ne gère pas les feuilles « complexes » (contenant du graphique etc.).
Paramètre :
1 feuille A ; Nom de la feuille
Renvoie :
Le nom de la feuille en cours si pas d'erreur
"1" si erreur
9 OpenXml_ListSheet
Prototype : string OpenXml_ListSheet
Renvoie la liste des noms de feuille séparés par un ; (point-virgule).La liste est toujours clôturée par un dernier point-virgule.
Renvoie "1" si erreur
10 OpenXml_CurrentSheet
Prototype : string OpenXml_CurrentSheet
Renvoie le nom de la feuille en cours ou "1" si erreur.
11 OpenXml_Read
Prototype : char OpenXml_Read(lig,col)
Lit une cellule et renvoie le texte de cette cellule.La valeur retournée peut être de type String (type S en diva).
Les dates sont toujours au format AAAAMMJJ, quelque soit le format d'affichage des dates.
Les datetimes sont toujours au format AAAAMMJJHHMMSS, quelque soit le format d'affichage des datetimes.
Paramètres :
1 ligN ; Numéro de ligne
1 col N ; Numéro de colonne
Renvoie :
Une chaîne contenant la valeur lue.
12 OpenXml_GetTypeLastRead
Prototype : int OpenXml_GetTypeLastRead()
Renvoie le type du contenu de la cellule qu'on vient de lire :
0 - inconnu, par défaut alpha
1 - alpha
2 - numérique
3 - time <hhmmss>
4 - date <aaaammjj>
5 - datetime <aaaammjjhhmmss>
13 OpenXml_GetSizeSheet
Prototype : int OpenXml_GetSizeSheet()
Calcule la dimension de la feuille écrite. Après l'appel à cette première fonction, on peut appeler les fonctions :
OpenXml_GetStartRow() qui retourne l'indice de la ligne début.
OpenXml_GetEndRow() qui retourne l'indice de la ligne fin.
OpenXml_GetStartColumn() qui retourne l'indice de la colonne début.
OpenXml_GetEndColumn() qui retourne l'indice de la colonne fin.
Ces fonctions permettent de se renseigner sur une feuille existante dont on ne connait pas le nombre de lignes et colonnes. Ainsi, on peut limiter la lecture de la feuille à la plage de cellules réellement existantes.
Exemple de boucle de lecture des cellules d'une feuille :
1 ligdebutL ; Indice de la ligne début
1 ligfinL ; Indice de la ligne fin
1 coldebutL ; Indice de la colonne début
1 colfinL ; Indice de la colonne fin
1 ll L ; curseur lignes
1 cc L ; curseur colonnes
1 valeurLueS ; valeur lue
; Détermination des indices limites de la feuille courante
OpenXml_GetSizeSheet()
Ligdebut = OpenXml_GetStartRow
Ligfin = OpenXml_GetEndRow
Coldebut = OpenXml_GetStartColumn
Colfin = OpenXml_GetEndColumn
; Boucle de lecture
For ll = ligdebut to ligfin
For cc = coldebut to colfin
valeurLue = OpenXml_read(ll, cc)
Next
Next
14 OpenXml_CreateFont
Prototype : int OpenXml_CreateFont(gras, taille, indexcouleur, nom, italique, soulignee, barree)
Création d'une police qui pourra être utilisée lors de l'appel à la fonction OpenXml_WrteFormat.
Paramètres :
1 gras X = 0 ; 1=gras
1 taille X = 0 ; 0=taille par défaut ; sinon mettre une valeur entre 8 et 72
1 indexcouleur X = 0 ; 0=couleur des caractères par défaut
1 nom 32 = " " ; Nom de la police ; espace indique la police pas défaut d'Excel
1 italique X = 0 ; 1=italique
1 soulignee X = 0 ; 1=soulignée
1 barree X = 0 ; 1=barrée
Une taille à 0 demande de prendre la hauteur par défaut de la police des cellules.
Une couleur à 0 demande de prendre la couleur des caractères par défaut (normalement le noir).
<Nom> à espace demande de prendre la police par défaut de Excel pour les cellules (en général Tahoma).
Renvoie :
L'indice de la police, à préciser lors de l'appel à la fonction OpenXml_WrteFormat.
Exemples :
1polx ; indice de la police
pol = OpenXml_CreateFont(1) ; mettre la police ne gras
pol = OpenXml_CreateFont(1,16) ; mettre la police en gras et en taille 16
pol = OpenXml_CreateFont(0,16) ; ne pas mettre la police en gras en taille 16
pol = OpenXml_CreateFont(0,0,24) ; ne pas mettre la police en gras en taille par défaut et les
; caractères en couleur 24 (bleu ciel)
pol = OpenXml_CreateFont(0, 0, 0, "Tahoma", 0, 0 ) ; police Tahoma, taille par défaut
14.1 Format des polices et des couleurs de fond des cellules
Les couleurs de fond des cellules sont les couleurs standard d'Excel et vont de 1 à 56.
La couleur 0 indique de ne pas changer la couleur si la cellule existe, sinon la couleur du fond de la nouvelle cellule sera la couleur de fond par défaut des cellules Excel (ou celle de la colonne si la colonne a une couleur prédéfinie).
Liste des couleurs :
Nota : la couleur 24 est souvent utilisée pour mettre une cellule en relief.
15 OpenXml_WriteFormat
Proto : int OpenXml_WriteFormat(lig, col, valeur, form, decim, multi, zero, indexcouleurfond, p1)
Ecrit un texte ou une valeur dans une cellule avec un format.
L'écriture se fait uniquement en mémoire.
Attention, cette fonction ne traite pas les formules et ne fait pas le recalcul des cellules. Pour que le recalcul du tableau se fasse et soit enregistré, il faut charger le fichier xlsx dans Excel et sauvegarder ensuite le résultat.
Lorsqu'on modifie le fichier xlsx, on positionne une information pour indiquer à Excel que les calculs ne sont pas à jour et qu'il lui faudra recalculer les formules lors de la prochaine ouverture du classeur.
Paramètres :
1 lig 6,0 = 0 Numéro de la ligne
1 col 6,0 = 0 Numéro de la colonne
1 valeurU Contenu de la cellule
1 form A = " " Format de la valeur "Texte", "Numeric", "Date",
"DateHeure", "Heure", "HeureMinuteSeconde",
"Multichoix","Duree"
1 decimN = 0 Nombre de décimales si format "Numeric"
1 multi A = " " Liste des multi-choix (séparer les choix par le caractère |)
1 zero B = FalseAfficher les zéros ; non affichés par défaut,
si la valeur est nulle, on affiche le texte à espace
1 indexcouleurfond x = 0 Couleur de fond 0 = ne pas changer la couleur de fond, sinon
c'est une valeur de 1 à 56 (cf. fonction OpenXml_CreateFont)
1 p1 x = 0 Numéro de police 0 = police par défaut, sinon mettre
l'indice renvoyé par la fonction OpenXml_CreateFont
Renvoie :
0 si pas d'erreur
Les formats possibles pour le paramètre <form> sont :
<span style="color: #943634">"Texte"</span> <valeur> représente un texte et le format d'affichage par défaut est "@".
<span style="color: #943634">"Numeric"</span> <valeur> est numérique, le champ <decim> doit contenir le nombre de 0
que l'on veut voir après la virgule.
<span style="color: #943634">"Date"</span> <valeur> est une date au format AAAAMMJJ.
<span style="color: #943634">"DateHeure"</span> <valeur> doit être au format AAAAMMJJHHMMSS.
<span style="color: #943634">"Heure"</span> <valeur> doit être au format HHMM [SS] ; la zone secondes [SS] n'est pas lue
(on peut la mettre ou pas, on fait comme si c'était 00).
<span style="color: #943634">"HeureMinuteSeconde"</span> <valeur> doit être au format HHMMSS.
<span style="color: #943634">"Duree"</span> <valeur> doit contenir un nombre de secondes.
<span style="color: #943634">"MultiChoix"</span> <valeur> contient le numéro de choix et le champ <multi> doit contenir la liste
des choix possibles séparés par le caractère | . Le résultat est de type texte.
Exemples :
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"10,1239"</span>, <span style="color: #943634">"Numeric"</span>, 2) <span style="color: #76923c">; Numérique formaté à 2 chiiffres après la virgule</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"10,1239"</span>, <span style="color: #943634">"Numeric"</span>, 3) <span style="color: #76923c">; Numérique formaté à 3 chiiffres après la virgule</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"20140926"</span>, <span style="color: #943634">"Date"</span> )
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"Simple texte"</span>, <span style="color: #943634">"Texte"</span>)
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"201409261030"</span>, <span style="color: #943634">"DateHeure"</span>)
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"103000"</span>, <span style="color: #943634">"Heure"</span>)
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"103000"</span>, <span style="color: #943634">"HeureMinuteSeconde"</span>)
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"70"</span>, <span style="color: #943634">"Duree"</span>) <span style="color: #76923c">; 1 minutes et 10 secondes</span>
OpenXml_WriteFormat(lig, col, 2, <span style="color: #943634">"MultiChoix"</span> ,0 , <span style="color: #943634">"Monsieur|Madame"</span> )
<span style="color: #76923c">; Création de deux styles de polices</span>
ppgras = OpenXml_CreateFont(1) <span style="color: #76923c">; juste gras</span>
pptitre = OpenXml_CreateFont(1,16 ) <span style="color: #76923c">; gras et grande taille (16)</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"10,126"</span>, <span style="color: #943634">"Numeric"</span>, 2, <span style="color: #943634">" "</span>, <span style="color: #0070c0">false</span>, 0, ppgras) <span style="color: #76923c">; gras pas de couleur</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"10,1239"</span>, <span style="color: #943634">"Numeric"</span>, 2,<span style="color: #943634">" "</span>, <span style="color: #0070c0">false</span>, 3, ppgras) <span style="color: #76923c">; gras et couleur 3 (rouge)</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"20140926"</span>, <span style="color: #943634">"Date"</span> ,<span style="color: #943634">" "</span>, <span style="color: #0070c0">false</span>, 24, pptitre) <span style="color: #76923c">; grand titre et couleur 24 (bleu ciel)</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"Simple texte"</span>, <span style="color: #943634">"Texte"</span>, <span style="color: #943634">" "</span>, <span style="color: #0070c0">false</span>, 0, 0) <span style="color: #76923c">; pas de format</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"201409261030"</span>, <span style="color: #943634">"DateHeure"</span>, <span style="color: #943634">" "</span>, <span style="color: #0070c0">false</span>, 0, 0) <span style="color: #76923c">; rien</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"103000"</span>, <span style="color: #943634">"Heure"</span>, <span style="color: #943634">" "</span>, <span style="color: #0070c0">false</span>, 24, pptitre) <span style="color: #76923c">; grand titre et couleur 24</span>
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"103000"</span>, <span style="color: #943634">"HeureMinuteSeconde"</span>, <span style="color: #943634">" "</span>, <span style="color: #0070c0">false</span>, 24)
OpenXml_WriteFormat(lig, col, <span style="color: #943634">"70"</span>, <span style="color: #943634">"Duree"</span>) <span style="color: #76923c">; 1 minutes et 10 secondes</span>
16 OpenXml_ReadCellByName
Lecture d'une cellule nommée unique par son nom.
Prototype : char OpenXml_ReadCellByName(nom)
Paramètres :
1 nom A ; nom de la cellule a lire,
; si c'est une plage, ca renvoi la valeur que de la premiere cellule
Renvoie :
Une chaîne contenant la valeur lue ou espace si le nom n'existe pas
Exemple :
1Valeur S
Valeur = OpenXml_ReadCellByName("test") ; Lecture de la cellule nommée « test »
17 OpenXml_AppendNameCell
Permet la création d'une cellule ou d'une plage de cellules nommée.
Prototype : int OpenXml_AppendNameCell(nomcellule , nomfeuille , lignedebut , lignefin , coldebut , colfin)
Paramètres :
1 nomcellule A; Nom que l'on va donner à la plage de cellule
1 nomfeuille A ; Nom de la feuille (onglet)
1 lignedebut N ; Indice ligne début de la plage à nommer
1 lignefin N ; Indice ligne fin de la plage à nommer
1 coldebut N ; Indice colonne début de la plage à nommer
1 colfin N ; Indice colonne fin de la plage à nommer
Renvoie :
1 si ok
Exemple :
1 nomcellule32 = "TEST" ; Nom que l'on va donner à la plage de cellules
1 nomfeuille32 = "Feuil1" ; Nom de la feuille (onglet)
1 lignedebut6,0 = 10 ; Indice ligne début de la plage à nommer
1 lignefin6,0 = 15 ; Indice ligne fin de la plage à nommer
1 coldebut 6,0 = 1 ; Indice colonne début de la plage à nommer
1 colfin 6,0 = 1 ; Indice colonne fin de la plage à nommer
1 Ok L ; retour de la fonction
Ok = OpenXml_AppendNameCell(nomcellule, nomfeuille, lignedebut, lignefin, coldebut, colfin)
If ( ok )
; La plage a bien été nommée
endif
Résultat sur un document vierge :
18 OpenXml_ReadNameCell
Recherche une plage de cellules nommée et renseigne les paramètres passés par adresse : nomfeuille, lignedebut, lignefin, coldebut et colfin.
Prototype : int OpenXml_ReadNameCell(nomcellule, &nomfeuille, &lignedebut, &lignefin, &coldebut, &colfin)
Paramètres :
1 nomcellule A; Nom de la plage de cellule à rechercher
1 nomfeuille 32; renseignée par la fonction : nom de la feuille contenant la plage nommée
1 lignedebut6,0 ; renseignée par la fonction : indice début ligne pour la plage nommée
1 lignefin6,0 ; renseignée par la fonction : indice fin ligne pour la plage nommée
1 coldebut6,0 ; renseignée par la fonction : indice début colonne pour la plage nommée
1 colfin 6,0 ; renseignée par la fonction : indice fin colonne pour la plage nommée
Renvoie :
1 si le nom existe dans la table des noms, ou bien renvoi 0 si ce nom n'existe pas
Renseigne les paramètres passés par adresse : nomfeuille, lignedebut, lignefin, coldebut et colfin.
Exemple :
1 nomcellule32 = "TEST" ; Nom de la plage de cellule à rechercher
1 nomfeuille32 ; renseignée par la fonction : nom de la feuille contenant la plage nommée
1 lignedebut6,0 ; renseignée par la fonction : indice début ligne pour la plage nommée
1 lignefin6,0 ; renseignée par la fonction : indice fin ligne pour la plage nommée
1 coldebut6,0 ; renseignée par la fonction : indice début colonne pour la plage nommée
1 colfin 6,0 ; renseignée par la fonction : indice fin colonne pour la plage nommée
1 Ok L ; Valeur de retour de la fonction
Ok = OpenXml_ReadNameCelll(nomcellule, nomfeuille, lignedebut, lignefin, coldebut, colfin)
If ( ok )
Display nomfeuille
Display lignedebut
Display lignefin
Display colonnedebut
Display colonnefin
endif
19 OpenXml_ReadCountNameCell
Retourne le nombre d'entrées dans la table des noms du document.
Prototype : int OpenXml_ReadCountNameCell
Paramètres :
Renvoie :
Renvoi le nombre de nom dans la table des cellules nommées
Exemple
1 idx 6,0
idx = OpenXml_ReadCountNameCell() ; Retourne le nombre de plages/cellules nommées du document
20 OpenXml_ReadNameCellIdx
Permet de lire la table des cellules nommées, selon l'indice de la table à partir de 1 jusqu'a OpenXml_ReadCountNameCell.
renseigne les paramètres passés par adresse : nomfeuille, lignedebut, lignefin, coldebut et colfin.
Prototype : int OpenXml_ReadNameCellIdx(idx,&nomcellule,&nomfeuille,&lignedebut,&lignefin,&coldebut,&colfin)
Paramètres :
1 idx N
1 nomcellule A
1 nomfeuille A
1 lignedebut N
1 lignefin N
1 coldebut N
1 colfin N
Renvoie :
Renvoi 1 si ok
Renseigne les paramètres passés par adresse : nomfeuille, lignedebut, lignefin, coldebut et colfin.
Exemple :
; Lecture des caractéristique des plage de cellules nommées
1 Nb L ; Nombre de plage de cellules nommées
1 idx L ; indice de la plage nommée
1 Ok L ; Valeur de retour de la fonction
1 nomfeuille32 ; renseignée par la fonction : nom de la feuille contenant la plage nommée
1 lignedebut6,0 ; renseignée par la fonction : indice début ligne pour la plage nommée
1 lignefin6,0 ; renseignée par la fonction : indice fin ligne pour la plage nommée
1 coldebut6,0 ; renseignée par la fonction : indice début colonne pour la plage nommée
1 colfin 6,0 ; renseignée par la fonction : indice fin colonne pour la plage nommée
nb = OpenXml_ReadCountNameCell
if nb <> 0
; Boucle sur les plages nommées
for idx = 1 to nb
; Lecture des caractèristiques de chaque cellule
ok = OpenXml_ReadNameCellIdx(idx, nomcellule, nomfeuille, lignedebut, lignefin, coldebut, colfin)
if (ok)
; Affichage des informations lues
display nomcellule
display nomfeuille
display lignedebut
display lignefin
display coldebut
display colfin
endif
next
endif