Récupérer des données avec un classeur d'OpenOffice

Résolu
darky93 Messages postés 42 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 13 octobre 2005 - 29 sept. 2005 à 10:19
cs_titiyo Messages postés 25 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 23 novembre 2007 - 2 oct. 2007 à 15:49
J'ai créé un petit
programme pour me familiariser avec le contrôle
d'OpenOffice.

J'arrive à ouvrir un document type classeur,
à modifier le nom des feuilles, à mettre du texte dans
les cellules, ajouter des feuilles, enregistrer, ..., ce qui est un
exploit pour moi vu mon niveau!

En bref des "fonctions de
bases"!

Ce que je n'arrive pas à faire c'est de
récupérer le texte d'une
cellule pour le mettre dans un TEdit. Je ne vois pas comment faire.



Voici le code que j'ai tapé pour
enregistrer et pour ouvrir mais je ne sais pas ce qu'il faut mettre au niveau de
Edit.Text:=?????
:





Var OpenOffice:Variant;

Document:Variant;

OpenDesktop:Variant;

LoadParams:Variant;

MonClasseur:Variant;

MaFeuille:Variant;

MaCellule:variant;

TextCursor:variant;

NomFichier:AnsiString{string?};



procedure TTest_Open.TransfererDelphiOpenClick(Sender: TObject);

var i:Integer;

begin

SaveOpen.initialdir:=repertoire;

if SaveOpen.Execute then

begin

OpenOffice:=CreateOleObject('com.sun.star.ServiceManager');


OpenDesktop:=OpenOffice.createInstance('com.sun.star.frame.Desktop');

LoadParams:=VarArrayCreate([0, -1], varVariant);


Document:=openDesktop.LoadComponentFromURL( 'private:factory/scalc',
'_blank', 0,


LoadParams);

MonClasseur:=Document.getSheets;

MonClasseur.insertNewByName('Riri', 0);

MonClasseur:=Document.getSheets;

MaFeuille:=MonClasseur.GetByIndex(2);

MaFeuille.Name:='Fifi';

for i:=0 to 4 do

begin



MonClasseur:=Document.getSheets;



MaFeuille:=MonClasseur.GetByIndex(1);



MaCellule:=Mafeuille.getCellByPosition(i,i+2);



TextCursor:=MaCellule.createTextCursor;



MaCellule.insertString( TextCursor, 'Loulou', false );

end;

NomFichier:=saveOpen.FileName;


NomFichier:='file:///'+StringReplace(NomFichier , '\',
'/',[rfReplaceAll]);


Document.storeAsUrl(NomFichier, VarArrayCreate([0, -1], varVariant));

Document.dispose;

OpenOffice := Unassigned;

end;

end;



procedure TTest_Open.TransfererOpenDelphiClick(Sender: TObject);

begin

OpenOpen.initialdir:=repertoire;

OpenOffice:=CreateOleObject('com.sun.star.ServiceManager');

if OpenOpen.Execute then

begin

NomFichier:=OpenOpen.FileName;

NomFichier:='file:///'+StringReplace(NomFichier , '\', '/',[rfReplaceAll]);

OpenDesktop:=OpenOffice.createInstance('com.sun.star.frame.Desktop');

Document:=OpenDesktop.LoadComponentFromURL( NomFichier, '_blank',0,



VarArrayCreate([0, - 1], varVariant));

MonClasseur:=Document.getSheets;

MaFeuille:=MonClasseur.GetByIndex(1);

MaCellule:=Mafeuille.getCellByPosition(1,2);

Edit.Text:=?????

Document.dispose;

OpenOffice := Unassigned;

end;

end;



Une autre petite question, comment peut on faire pour cacher OpenOffice
quand il est ouvert (un peu comme avec excel et la commade
.visible:=false;)

2 réponses

darky93 Messages postés 42 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 13 octobre 2005
10 oct. 2005 à 14:22
J'ai trouvé (avec un peut d'aide)



Il suffit donc de remplacer le Edit.Text:=????? par les deux lignes suivantes:

MaCellule:=Mafeuille.getCellByPosition(0,1).getText;

Edit.Text:=MaCellule.Getstring;



Par contre pour qu'OpenOffice reste caché ça
3
cs_titiyo Messages postés 25 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 23 novembre 2007
2 oct. 2007 à 15:49
tient j'ai ce peti lien qui pourait t'aider http://www.developpez.net/forums/showthread.php?t=113756&highlight=openoffice

lui a reussit a le cache
0
Rejoignez-nous