Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2898 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Open Office Basic : exportation de diagrammes de Calc vers Writer.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Open Office Basic : exportation de diagrammes de Calc vers Writer.

n°1763249
slr56
Tout problème a sa solution.
Posté le 22-07-2008 à 15:52:20  profilanswer
 

Bonjour,
je ne sais pas si je suis dans la bonne rubrique. Je demande aux modos, svp, de bien vouloir déplacer mon topic au bon endroit si je l'ai mal placé.
 
Voici mon problème,
j'ai un document Calc sur lequel je crée moi-même des diagrammes en ligne de code. Ca marche, là il n'y a pas de soucis.
Le problème vient maintenant, je souhaite exporter (en ligne de code bien évidemment) ces diagrammes vers un document Writer créer au préalable.
Je me suis renseigner avec le forum http://user.services.openoffice.org/fr/forum/ mais le problème est qu'il y a peu de personnes qui le fréquentent. Du coup, ça fait une semaine que j'attends un coup de pouce en vain. Et ça me bloque terriblement car je ne peux pas avancer mon projet.
 
Un forumeur d'Open Office m'a donné un morceau de code qui ferait globalement ce que je veux.  
 
Voici le code en question :
 

Code :
  1. Sub ExporterGraphWriter
  2. Dim oDoc, oDocCtrl, oSheet as Object
  3. Dim oDrawPage, oShape as Object
  4. Dim lfound as Boolean
  5. Dim i, nNumShapes as Integer
  6. Dim oDispatchHelper,oDocFrame as Object
  7. Dim Url1, Url2 As String
  8. Dim oWriterDoc, oWriterDocCtrl, oWriterDocFrame
  9. ' Get one of the document's controllers.
  10. oDoc = ThisComponent
  11. oDocCtrl = oDoc.getCurrentController()
  12. lFound = False
  13. ' Search the draw page for the chart.
  14. oSheet = oDoc.getSheets().getByIndex( 0 )
  15. oDrawPage = oSheet.getDrawPage()
  16. nNumShapes = oDrawPage.getCount()
  17. For i = 0 to nNumShapes-1
  18.  oShape = oDrawPage.getByIndex( i )
  19.  ' Can't call supportsService unless the com.sun.star.lang.XServiceInfo is present.
  20.  If HasUnoInterfaces( oShape, "com.sun.star.lang.XServiceInfo" ) Then
  21.   If oShape.supportsService( "com.sun.star.drawing.OLE2Shape" ) Then
  22.   ' Is it a Chart?
  23.    If oShape.CLSID = "12DCAE26-281F-416F-a234-c3086127382e" Then
  24.    ' Select the chart shape.
  25.     oDocCtrl.select( oShape )
  26.     lFound = True
  27.    EndIf
  28.   EndIf
  29.  EndIf
  30. Next
  31.  
  32. If lFound Then
  33.  oDispatchHelper = createUnoService( "com.sun.star.frame.DispatchHelper" )
  34.  oDocFrame = oDocCtrl.getFrame()
  35.  oDispatchHelper.executeDispatch( oDocFrame, ".uno:Copy", "", 0, Array() )
  36.  'Url1 = "private:factory/swriter"
  37.  Url1 = "file:///C:/test/modele.ott"
  38.  Url2 = "file:///C:/test/rapport2008.odt"
  39.  oWriterDoc = StarDesktop.loadComponentFromURL( Url1, "_blank", 0, Array() )
  40.  oWriterDocCtrl = oWriterDoc.getCurrentController()
  41.  oWriterDocFrame = oWriterDocCtrl.getFrame()
  42.  oDispatchHelper.executeDispatch( oWriterDocFrame, ".uno:Paste", "", 0, Array() )
  43.  oWriterDoc.storeAsURL(Url2, Array())
  44.  oWriterDoc.Close(true)
  45. EndIf
  46. End Sub


Le problème est que j'ai du mal à comprendre en détail les lignes de ce code et en particulier ce que font les variables "oShape", "oDocCtrl", "oDocFrame"
 
Ensuite l'URL1, correspond à quel document? Car l'URL2 ok, c'est le fichier writer. Mais l'URL1?
 
Enfin à quoi servent les outils "HasUnoInterfaces,supportsService, getDrawPage et getCount".
 
Merci de votre collaboration
 
nb : si vous avez besoin d'informations supplémentaires, n'hésitez pas à me demander. :)


Message édité par slr56 le 23-07-2008 à 10:21:08
mood
Publicité
Posté le 22-07-2008 à 15:52:20  profilanswer
 

n°1763386
slr56
Tout problème a sa solution.
Posté le 22-07-2008 à 20:29:01  profilanswer
 

up
 
C'est très important. svp


Message édité par slr56 le 22-07-2008 à 20:29:21
n°1763524
slr56
Tout problème a sa solution.
Posté le 23-07-2008 à 08:28:47  profilanswer
 

up

n°1763568
slr56
Tout problème a sa solution.
Posté le 23-07-2008 à 10:02:18  profilanswer
 

Je pense avoir compris le fonctionnement. Ce que je veux savoir c'est à quoi correspond l'adresse URL1 à la ligne 39?
De l'aide svp.

 

Et dans la partie suivante, je voudrais savoir ce que signifie les lignes 6 à 8 :

Code :
  1. oDoc = ThisComponent
  2. oDocCtrl = oDoc.getCurrentController()
  3. lFound = False
  4. oSheet = oDoc.getSheets().getByIndex( 0 )
  5. oDrawPage = oSheet.getDrawPage()
  6. nNumShapes = oDrawPage.getCount()
  7. For i = 0 to nNumShapes-1
  8.   oShape = oDrawPage.getByIndex( i )
 

Aidez-moi svp!


Message édité par slr56 le 23-07-2008 à 14:54:35
n°1763633
slr56
Tout problème a sa solution.
Posté le 23-07-2008 à 11:34:26  profilanswer
 

svp

n°1763863
Trap D
Posté le 23-07-2008 à 18:43:33  profilanswer
 

Regarde cette URL : http://api.openoffice.org/docs/com [...] ment.html.
Puis cette URL : http://api.openoffice.org/docs/com [...] lier.html. mauvaise nouvelle, getDrawPage est "deprecated" donc il est déconseillé de l'utiliser.
Puis celle-ci : http://api.openoffice.org/docs/com [...] Page.html.
En fait celà te permets me semble-t-il de savoir combien il y a de "shapes" dans ta page et de les obtenir par leur numéro d'index dans la page.
Que représente un Shape, alors là ...
 

n°1763969
slr56
Tout problème a sa solution.
Posté le 24-07-2008 à 08:24:22  profilanswer
 

je suppose que le programmeur qui m'a donné ce code sous-entendait "diagramme" par "shape" même si le nom en anglais est "chart", non?

Message cité 1 fois
Message édité par slr56 le 24-07-2008 à 08:24:29
n°1764119
Trap D
Posté le 24-07-2008 à 11:08:05  profilanswer
 

slr56 a écrit :

je suppose que le programmeur qui m'a donné ce code sous-entendait "diagramme" par "shape" même si le nom en anglais est "chart", non?

Ayant égaré par mégarde ma boule de cristal ...
Tu as testé le code fourni ?
 
Pour l'URL1 tu peux trouver les explications des extensions sur Google :"extension .ott" ==>  http://www.fileinfo.net/extension/ott
 
Il faut aussi s'habituer au vocabulaire des API OpenOffice,  ce n'est pas forcément simple  :pt1cable:  

n°1764352
slr56
Tout problème a sa solution.
Posté le 24-07-2008 à 16:17:26  profilanswer
 

salut Trap D,
 
je ne sais pas pourquoi mais lorsque j'ouvre les liens que tu m'as posté, j'arrive sur le site http://api.openoffice.org/docs/com [...] ment.html.
et j'obtiens ceci :
Error
 
No matches to your request were found.
 
Possible causes
 
    * Incorrect URL. Check spelling and try again.
    * Link does not exist. Use the browser's "back" button to return to the referring page.

n°1764567
Trap D
Posté le 24-07-2008 à 23:41:10  profilanswer
 

slr56 a écrit :

salut Trap D,
 
je ne sais pas pourquoi mais lorsque j'ouvre les liens que tu m'as posté, j'arrive sur le site http://api.openoffice.org/docs/com [...] ment.html.
et j'obtiens ceci :
Error
 
No matches to your request were found.

A ben oui, dis donc, moi aussi  :heink:  
J'avais simplement fait Google + getSheets().
Essaye.
Après j'avais fait Google + getDrawPage()
 
 

mood
Publicité
Posté le 24-07-2008 à 23:41:10  profilanswer
 

n°1765854
slr56
Tout problème a sa solution.
Posté le 28-07-2008 à 14:41:10  profilanswer
 

Trap D a écrit :

A ben oui, dis donc, moi aussi  :heink:  
J'avais simplement fait Google + getSheets().
Essaye.
Après j'avais fait Google + getDrawPage()
 
 


 
j'ai fait la recherche via Google et j'ai eu les pages merci.  ;)  Quelle est la différence... bonne question.. Bref

n°1765855
slr56
Tout problème a sa solution.
Posté le 28-07-2008 à 14:41:19  profilanswer
 

J'ai réussi ENFIN à comprendre le code que j'ai posté précédemment. Et voici que j'ai fait. Je n'ai plus d'erreur :):):) ...mais mon diagramme n'est toujours pas exporté  :pfff:  :pfff:  :(:(:(

 
Code :
  1. 'EXPORTATION DES DIAGRAMMES
  2. 'Document actif
  3. Dim monDoc_Writer
  4. Dim copie_graph_1 as Object
  5. Dim mon_frame1 as object
  6. Dim mon_Url as string
  7. Dim monDoc_exp as object
  8. Dim maFeuille_exp as Object
  9. Dim mesFeuilles_exp as Object
  10. Dim mon_control_doc_writer
  11. monDoc_exp=ThisComponent
  12. mesFeuilles_exp=monDoc_exp.getCurrentController()
  13. maFeuille_exp=monDoc_exp.getSheets().getByName("f_program" )
  14. If HasUnoInterfaces( graphique_1, "com.sun.star.lang.XServiceInfo" ) Then
  15.    If graphique_1.supportsService( "com.sun.star.drawing.OLE2Shape" ) Then
  16.       If graphique_1.CLSID = "12DCAE26-281F-416F-a234-c3086127382e" Then
  17.       maFeuille_exp.select(graphique_1)
  18.       Endif
  19.    Endif
  20. Endif
  21. copie_graph_1 = createUnoService( "com.sun.star.frame.DispatchHelper" )
  22. mon_frame1=ThisComponent.CurrentController.Frame
  23. copie_graph_1.executeDispatch( mon_frame1, ".uno:Copy", "", 0, Array() )
  24. mon_Url="file:///D:/"&"synthese_" & DatePart("yyyy", date)& "_" & DatePart("m", date)& "_" & DatePart("d", date) & ".doc"
  25. monDoc_Writer = StarDesktop.loadComponentFromURL(mon_Url, "_blank", 0, Array() )
  26. mon_control_doc_writer=monDoc_Writer.getCurrentController()
  27. mon_writer_doc_frame=mon_control_doc_Writer.getFrame()
  28. copie_graph_1.executeDispatch( mon_writer_doc_frame, ".uno:Paste", "", 0, Array() )
  29. 'ferme le document
  30. monDoc_Writer.Close(true)
 


Quelqu'un sait d'où vient le problème?


Message édité par slr56 le 28-07-2008 à 17:10:35
n°1766182
slr56
Tout problème a sa solution.
Posté le 29-07-2008 à 09:18:58  profilanswer
 

up
Comment puis-je vérifier qu'à la ligne 20, "maFeuille_exp.select(graphique_1)" la variable "maFeuille_exp" prend bien l'objet graphique_1?

n°1766250
slr56
Tout problème a sa solution.
Posté le 29-07-2008 à 11:42:37  profilanswer
 

help

n°1766422
slr56
Tout problème a sa solution.
Posté le 29-07-2008 à 16:26:07  profilanswer
 

up :'(:'(:'(:'(:'(:'(:'(:'(:'(:'(

n°1766555
slr56
Tout problème a sa solution.
Posté le 29-07-2008 à 21:01:53  profilanswer
 

s'il vous plait, aidez-moi

n°1766630
slr56
Tout problème a sa solution.
Posté le 30-07-2008 à 09:55:03  profilanswer
 

up

n°1766764
slr56
Tout problème a sa solution.
Posté le 30-07-2008 à 15:32:11  profilanswer
 

help me Desperate HouseMan... :'(:'(:'(:'(:'(:'(:'(:'(:'(

n°1766817
slr56
Tout problème a sa solution.
Posté le 30-07-2008 à 16:51:53  profilanswer
 

personne ne code jamais en OOBasic??????

n°1767141
slr56
Tout problème a sa solution.
Posté le 31-07-2008 à 09:48:09  profilanswer
 

up

n°1767198
Trap D
Posté le 31-07-2008 à 11:42:19  profilanswer
 

Apparemment pas beaucoup sur ce forum, il y a des ML spécialisées : http://user.services.openoffice.org/fr/forum/

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Open Office Basic : exportation de diagrammes de Calc vers Writer.

 

Sujets relatifs
Programme open-source, licenses GPL, GNUIDE C++ Codeblocks ( open source ) ...
[VB6] Question, "Le grand livre visual basic 6"exportation/importation base MySQL
export table SQL vers fichierProblème avec visual basic .net, usercontrol, validating/enter event
Comment faire du RSH depuis un PC Windows vers un PC Linux ?[SSIS] Flat file vers Table dans la BDD
referer et window.open[VB.NET] Fichier txt vers excel
Plus de sujets relatifs à : Open Office Basic : exportation de diagrammes de Calc vers Writer.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR