IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[POI] Usage à partir d'une Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut [POI] Usage à partir d'une Servlet
    bonjour,
    jutilise POI pr afficher des données au format xls ds mon browser IE. jarrive tres bien a le faire qd je passe par un fichier xls que je créé à laide de POI, mais ce que je voudrai faire serait de ne pas passer par un fichier mais par un flux de données.(outputstream au lieu de fileouputstream)
    en envoyant ce flux ds a response http, je pensais que ça devait passer mais ce nest pas le cas...
    ie maffiche des données issu du flux xls ms pas ds excel...
    est ce quelqu'un pourrait me dire sil est possible de n pas passer par un fichier en utilisant POI?
    merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 119
    Par défaut
    Hello,

    C'est plus une question j2ee.

    Redéfinis le type de ta sortie, en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     response.setContentType("application/vnd-ms.excel");

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    g deja essayé de redefinir le type de sortie mais comme je passe par un flux, il me lance excel mais cherche a ouvrir un fichier xls.
    or il ny en a pas et ne maffiche dc qu'une feuille vierge...

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 119
    Par défaut
    Affiche un petit bout de code ...

    La partie ou tu envoi le stream

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    System.out.println("avt class");
    /*je charge la classe composant documentation dt la méthode newInstance génere le flux xls*/
    		byte[] b = ((ComposantDocumentation) Class.forName("ComposantDocumentation").newInstance()).newInstance();
    		System.out.println("apres class");
    		resp.setContentLength(content.length);
    		resp.addHeader("Content-Type","application/vnd.ms-excel");
    		resp.getOutputStream().write(b);
    voilà le code de la méthode newInstance

    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
     
    public byte[] newInstance() throws IOException
    	{
    		System.out.println("new instance");
    		// exemple POI
    		// creation d'un classeur
    		HSSFWorkbook wb = new HSSFWorkbook();
    		// creation dune feuille
    		HSSFSheet sheet = wb.createSheet("new sheet");
     
    		// creation d'une ligne et insertion de cellules
    		HSSFRow row = sheet.createRow((short)0);
    		// creation d'une cellule et insertion d'une valeur
    		HSSFCell cell = row.createCell((short)0);
    		cell.setCellValue(1);
     
    		// meme chose en 1 ligne
    		row.createCell((short)1).setCellValue(1.2);
    		row.createCell((short)2).setCellValue("This is a string");	
    		row.createCell((short)3).setCellValue(true);
     
    		// ecriture du fichier de sortie
    		FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    		ByteArrayOutputStream sortie = new ByteArrayOutputStream();
    		wb.write(sortie);
    		byte[] b = sortie.toByteArray();
    		fileOut.close();	
    		System.out.println("fin new instance");
    		return b;
     
    	}

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 119
    Par défaut
    Salut,

    Essaye un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    response.setContentType("application/vnd.ms-excel");
    HSSFWorkbook classeur = new HSSFWorkbook(); 
     
    // cré les feuilles et les cellules  et remplis le tout , 
     
    // ensuite tu récupére l'OutputStream de la servlet 
     
    OutputStream out = response.getOutputStream(); 
    classeur.write(out);  // tu écris le classeur sur le stream 
    out.close();  // ferme le stream

    Ca devrait marcher normalement. Mais j'ai pas essayé

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    là je dis chapo bas !!
    ça marche , merci !!!

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    g juste changé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	resp.setContentType("application/vnd.ms-excel"); 
    		byte[] b = ((ComposantDocumentation) Class.forName("ComposantDocumentation").newInstance()).newInstance();
    		resp.getOutputStream().write(b);
    merci

    <résolu ajouté par Braim>

  9. #9
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 16
    Par défaut
    Salut, en fait g le m probleme que fredmorvant29.... Sauf que moi je fais des JSP... bref g tout pareil notamment pour generer le fichier Excel (je renvoie un tableau de byte) mais par contre, des que je mets ne serait-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpServletResponse response
    dans ma page JSP ben elle affiche plus rien...
    Je sais que je suis pas un expert en JSP mais là jcomprends po...
    Une fois que g obtenu mon tableau de byte, comment faire pour afficher mon fichier excel dans IE sans soucis??
    Merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Java/XML generer un fichier XML a partir d'une Servlet
    Par fabricew59 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 03/04/2007, 11h43
  2. Réponses: 1
    Dernier message: 18/01/2007, 11h09
  3. Arrêter à la Webapp à partir d'une servlet
    Par Coulon Arnaud dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 30/06/2006, 09h45
  4. Réponses: 2
    Dernier message: 12/05/2006, 18h49
  5. [SERVLET]Appel d'un fichier à partir d'une servlet
    Par fchafia dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 17/03/2005, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo