Exemples OpenXml - Excel
Création d'un nouveau classeur et écriture de données
1 fic 260
1 creation x
1 if1 x
1 if2 x
; Initialisation du module d'export
if OpenXml_Begin <> 0
display OpenXml_GetMsgError
preturn
endif
; Création d'un nouveau classeur
fic = "C:\Temp\Test.xlsx"
creation = 1
if OpenXml_FileOpen(fic,creation) <> 0
display OpenXml_GetMsgError
OpenXml_End
preturn
endif
; Création d'une feuille "Test", si elle n'existe pas. Elle devient la feuille courante.
OpenXml_GotoSheet("Test" , 1)
; 2 styless de polices
if1 = OpenXml_CreateFont(1,16,7) ; Police = 'Par défaut' Gras 16
if2 = OpenXml_CreateFont(1,14) ; Police = 'Par défaut' Gras 14ion
; Ecriture de quelques cellules en dure
OpenXml_WriteFormat(1, 1, translate("Journal"), "Texte", 0, " ", false,24,if1)
OpenXml_WriteFormat(1, 2, C8T1.Jnl, "Texte")
OpenXml_WriteFormat(1, 3, C8T1.Lib(2), "Texte")
OpenXml_WriteFormat(1, 5, translate("Exercice début"), "Texte", 0, " ", false,24,if2)
OpenXml_WriteFormat(1, 6, C3XQ.exoddt, "Date")
OpenXml_WriteFormat(2, 5, translate("Période début"), "Texte", 0, " ", false,24,if2)
OpenXml_WriteFormat(2, 6, C3XQ.perddt, "Date")
OpenXml_WriteFormat(3, 5, translate("Période fin"), "Texte", 0, " ", false,24,if2)
OpenXml_WriteFormat(3, 6, C3XQ.perfdt, "Date")
; Ecriture du fichier
OpenXml_FileClose()
; Libération de la DLL
OpenXml_End()
Lecture d'une feuille existante
1fic 260
1creation x
1 ligdebutL ; Indice de la ligne début
1 ligfin L ; Indice de la ligne fin
1 coldebutL ; Indice de la colonne début
1 colfin L ; Indice de la colonne fin
1 ll L ; curseur lignes
1 cc L ; curseur colonnes
1 valeurLueS ; valeur lue
; Initialisation du module d'export
if OpenXml_Begin <> 0
display OpenXml_GetMsgError
preturn
endif
; Ouverture d'un classeur existant
fic = "C:\Temp\Test.xlsx"
creation = 0
if OpenXml_FileOpen(fic,creation) <> 0
display OpenXml_GetMsgError
OpenXml_End
preturn
endif
; Positionnement sur la feuille "Entete"
OpenXml_GotoSheet("Entete" , 0)
; Lecture de cellules dont on connait la position
R2T1.Lib(1) = OpenXml_Read(1,1) ; Contenu de la cellule A1
R2T1.Lib(2) = OpenXml_Read(1,2) ; Contenu de la cellule A2
R2T1.FaDt = OpenXml_Read(2,1) ; Contenu de la cellule B1
; Changement de feuille, Positionnement sur la feuille "Donnees"
OpenXml_GotoSheet("Donnees", 0)
; Lecture de toutes les données
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
; Fermeture du fichier
OpenXml_FileClose()
; Libération de la DLL
OpenXml_End()
Exemple complet (création feuille, création police, écriture, relecture)
procedure LectureTailleFeuille
1 car 1
beginp
OpenXml_GetSizeSheet
display " "
display "Ligne debut = " & tostring(OpenXml_GetStartRow)
display "Ligne fin = " & tostring(OpenXml_GetEndRow)
display "Colonne debut = " & tostring(OpenXml_GetStartColumn)
display "Colonne fin = " & tostring(OpenXml_GetEndColumn)
input " " car
display " "
endp
procedure demo
1 lig x
1 co lx
1 lig2 x
1 cc x = 0
1 pp x = 0
1 pp1 x = 0
1 pp2 x = 0
1 pp3 x = 0
1 TypeDeWritePourLaDemo x = 0
1 retour S
1 Choix x
beginp
if OpenXml_Begin <> 0 ;chargement du module openxml
; chargement de la dll DhdivaltoOpenXML.dll et initialisation de la dll
; 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 une ancienne version
; 3 si erreur d'initialisation
display OpenXml_GetMsgError
programgoto " "
endif
fic = "C:\divalto\Test.xlsx" ;ouverture du fichier test.xlsx avec création s'il n'existe pas
creation = 1 ;0=ne pas créer le fichier s'il n'existe pas 1=créer le fichier s'il n'existe pas
if OpenXml_FileOpen(fic,creation) <> 0
display OpenXml_GetMsgError
goto fini
endif
LectureTailleFeuille
retour = OpenXml_GotoSheet(" ",0)
display "Nom de la feuille en cours = " & left(retour)
OpenXml_ColumnWidth(1,20) ;taille de la colonne 1
OpenXml_ColumnWidth(2,40) ;taille de la colonne 2
OpenXml_ColumnWidth(5,30) ;taille de la colonne 5
;Création de polices
pp1 = OpenXml_CreateFont(1) ; Police Gras
pp2 = OpenXml_CreateFont(1,16) ; Police Gras taille 16
pp3 = OpenXml_CreateFont(0,16) ; Police taille 16
display "écriture de 20000 cellules "
pp = 0
cc = 0
TypeDeWritePourLaDemo = 1
Choix = 1
for lig = 1 to 1000
for col = 1 to 20
switch TypeDeWritePourLaDemo
case 1
OpenXml_WriteFormat( lig, col, "10,126" , "Numeric", 2, " ", false,cc,pp)
case 2
OpenXml_WriteFormat( lig, col, "10,1239" , "Numeric", 3, " ", false,cc,pp)
case 3
OpenXml_WriteFormat( lig, col, "20140926", "Date", 0, " ", false,cc,pp)
case 4
OpenXml_WriteFormat( lig, col, "Simple texte" , "Texte", 0, " ", false,cc,pp)
case 5
OpenXml_WriteFormat( lig, col, "201409261030" , "DateHeure", 0, " ", false,cc,pp)
case 6
OpenXml_WriteFormat( lig, col, "103000", "Heure", 0, " ", false,cc,pp)
case 7
OpenXml_WriteFormat( lig, col, "103000", "HeureMinuteSeconde", 0, " ", false,cc,pp)
case 8
OpenXml_WriteFormat( lig, col, "70", "Duree", 0, " ", false,cc,pp)
Case 9
OpenXml_WriteFormat( lig, col, choix, " MultiChoix ",0 , \
"Monsieur|Madame" ,false,ccp,pp)
endswitch
;on fait ‘tourner’ les valeurs pour voir tous les cas possibles
Choix++
If Choix > 2
Choix = 1
Endif
TypeDeWritePourLaDemo++
if TypeDeWritePourLaDemo > 9
TypeDeWritePourLaDemo = 1
endif
;couleur prédefinie de excel de 1 a 56
cc++
if cc > 56
cc= 0
endif
switch pp
case 0
pp = pp1
case pp1 ;if pp = pp1
pp = pp2
case pp2 ;if pp = pp2
pp = pp3
case pp3 ;if pp = pp3
pp = 0
endswitch
next
next
LectureTailleFeuille
display " "
display "lecture cellules "
display " "
for lig = 1 to 1000
for col = 1 to 20
retour = OpenXml_Read(lig,col)
display left(retour) & " " 0
next
display " "
next
OpenXml_FileClose()
label fini
OpenXml_End ; fin de l'utilisation de la dll DhdivaltoOpenXML
endp
main
demo
programgoto " "