Bonjour,

Je souhaite ouvrir un fichier excel que j'ai rempli au préalable avec des données de ma base.

Il ne me reste plus qu'à l'ouvrir quand je clique sur un bouton de mon appli. J'ai essayé énormément de chose, je suis allez sur metalink mais rien n'y fait.

Soit il ne s'ouvre pas automatiquement mais le fichier existe bien, soit il s'ouvre vide, soit j'ai une erreur ORA.

Quelqu'un peut il m'aider ?

Voilà deux codes différents que j'ai essayé :

1)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 application := OLE2.CREATE_OBJ('Excel.Application'); 
   OLE2.SET_PROPERTY(application,'Visible', 1);
 
   workbooks := OLE2.GET_OBJ_PROPERTY(application, 'Workbooks'); 
 
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args, v_nomfichier); 
   workbook := OLE2.GET_OBJ_PROPERTY(workbooks, 'Open', args); 
   OLE2.DESTROY_ARGLIST(args);
Rien se s'ouvre, v_nomfichier est le chemin vers le fichier excel que j'ai crée.

2)

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
APPID := DDE.APP_BEGIN('C:\Program Files\Microsoft Office\Office\Excel.EXE',
                          DDE.APP_MODE_MINIMIZED);
 
/* Establish a conversation with Excel */
/* The following loop will not end until a conversation with Excel
   has been established.  Therefore, it can result in a endless loop,
   so use with caution. */
   WHILE NOT conv_established LOOP
     BEGIN
       convid := DDE.INITIATE('excel', 'system');
       conv_established := TRUE;
     EXCEPTION
       WHEN DDE.DMLERR_NO_CONV_ESTABLISHED THEN
       conv_established := FALSE;
     END; -- loop
 END LOOP;
 
/* Open Excel document */
/* This assumes that you have an Excel spreadsheet named ddetest.xls
   in the root of e: */
     DDE.EXECUTE(convid, '[Open(v_nomfichier)]', 10000);
 
/* Initiate conversation with Excel document */
     docid := DDE.INITIATE('excel', v_nomfichier);
 
/* Begin transfer to Excel */
     DDE.POKE(docid, 'R2C2', 'Text', DDE.CF_TEXT, 10000);
 
/*End transfer to Excel */
     DDE.TERMINATE(docid);
     DDE.TERMINATE(convid);
     DDE.APP_END(appid);
Ici j'ai une erreur 0RA-106555 ce qui veu dire que ça vient du DDE.POKE. Apparemment, j'ai lu que pour les espagnols par exemple ce n'était pas 'R2C2' mais 'F2C2' car ligne en espagnol commence par F. J'ai don essayé avec un 'L' à la place mais ca ne change rien


Voilà merci d'avance de votre aide