Ouverture fenêtre excel

Ouverture fenêtre excel - Java - Programmation

Marsh Posté le 01-09-2005 à 22:48:41    

Bonjour,  
 
j'ai lu dans le tutorial de l'API Excel pour Java qu'il était possible d'envoyer sur la sortie un fichier Excel, en définissant correctement l'en-tête HTTP.  
Je voudrais utiliser ça dans une servlet pour créer un fichier excel et l'ouvrir immédiatement chez un client, mais je n'ai pas vu la manière de le faire, ou alors je n'ai pas bien regardé dans le tutorial...
Existe-t-il une méthode spécifique dans l'API ou faut-il faire une redirection spéciale?
 
Merci

Reply

Marsh Posté le 01-09-2005 à 22:48:41   

Reply

Marsh Posté le 08-09-2005 à 11:27:05    

Essaye ça :
 
response.setContentType("application/vnd.ms-excel" ) ;
response.setHeader("Content-Disposition","attachment; filename=Mon_fichier.xls" );
 
// on ouvre un flux et on ecrit le tableau dedans
PrintWriter out = new PrintWriter( response.getOutputStream() ) ;
out.println( tableauExcel ) ;
out.flush() ;
out.close() ;
 
Dans mon cas tableauExcel  est un StringBuffer (créé comme un CSV)

Reply

Marsh Posté le 08-09-2005 à 13:38:48    

Finalement j'avais utisé une technique qui ressemble en fait très fortement à ça. Il s'agit de créer une JSP qui premet d'ouvrir des fichiers xls.  
Voici le code:  
 
             response.setContentType("application/xls" );
 response.setHeader("Content-Disposition", "atachment; filename=MonFichier.xls" );  
 response.setHeader("Content-Description", "JSP Generated Data" );  
 
 
 try
             {
  File uFile = new File( path );  
  // calcule la taille du fichier (inutile ici)
  int fSize=(int)uFile.length();  
  //  objet qui va permettre de lire dans le fichier :
  FileInputStream fis = new FileInputStream(uFile);  
  // ouverture du flux de sortie pour créer la réponse qui va contenir le fichier excel (pareil que pour les fichiers html)
  PrintWriter pw = response.getWriter();
  // boucle octet par octet sur le fichier
                          // tant qu'il y a un octet à lire, tu écris l'octet dans la réponse
  int c=-1;
  while ((c = fis.read()) != -1)
                                   pw.print((char)c);
   
  // Maintenant y a plus qu'à tout fermer et envoyer le tout
  fis.close();
  pw.flush();
  pw = null;  
 }
 catch(Exception e){}
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed