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