Bonjour,
J'aurais besoin d'ajouter un export de données au format du tableur d'open office via OLE...
J'utilise le pilotage un peu de la même façon que je le fais pour Microsoft Excel avec des Olevariant pour l'objet application et chaque feuille :
mais si je veux garder l'esprit de ce que je faisais avec l'export excel si je ne veux pas réécrire tout l'export, je dois prendre une plage de cellules, puis travailler dessus (voire ajouter des lignes) puis réinjecter cette plage dans le document, un peu comme cela (code pour Microsoft Excel) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 aOfficeApp := CreateOleObject('com.sun.star.ServiceManager'); ..... OpenDesktop := aOfficeApp.createInstance('com.sun.star.frame.Desktop'); LoadParams := VarArrayCreate([0, -1], varVariant); NomFichier := StringReplace(aNomFichierTravail, '\', '/', [rfReplaceAll, rfIgnoreCase]); aOfficeDocument := OpenDesktop.LoadComponentFromURL('file:///'+NomFichier, '_blank', 0, LoadParams);
J'ai à peu près trouvé comment faire toutes les opérations nécessaires à mon export...sauf l'affectation de la plage (cela semble déclencher une exception en lecture de la première valeur variante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 XLDonneesPageCourante := VarArrayCreate( [ 1, aLigneFin, 1, aColonneFin], varVariant); XLDonneesPageCourante := aXLPageCourante.Range[ RefToCell( 1, 1), RefToCell( aLigneFin, aColonneFin)].FormulaLocal; // .... // Traitement sur le tableau de variant //... // Réaffectation de la plage aXLPageCourante.Range[ RefToCell( 1, 1), RefToCell( NouveauNombreDelignes, aColonneFin)].FormulaLocal := XLDonneesPageTransformee;
Est-ce possible de procéder ainsi ou un peu différemment...et, si oui, comment ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 XLDonneesPageTravail := VarArrayCreate( [ 0, aColonneFin, 0, aLigneFin], varVariant); XLDonneesPageCourante := aXLPageCourante.GetCellRangeByPosition(0, 0, aColonneFin, aLigneFin).GetFormulaArray; if (VarType(XLDonneesPageCourante[0, 0]) <> varNull) and (VarType(XLDonneesPageCourante[0, 0]) <> varEmpty) then // <-- EXCEPTION ICI begin .... end;
Partager