[JAVA] probleme d'outputstream

Résolu
Toinou87 Messages postés 28 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 8 août 2010 - 12 août 2008 à 11:48
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 -
Bonjour,
je cré un fichier excel avec POI et veux l'exporter.
mon code (je tiens a dire que le meme code au caractere pres marche dans une autre de mes appli) appeler par struts

package web.actions;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TestExport extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {


response.setContentType("application/vnd.ms-excel" );
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet" );

// Create a row and put some cells in it. Rows are 0 based.
HSSFRow row = sheet.createRow((short)0);

// Create a cell and put a value in it.
HSSFCell cell = row.createCell((short)0);

cell.setCellValue(1);

// Or do it on one line.
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("This is a string" );
row.createCell((short)3).setCellValue(true);
// Write the output
OutputStream out = response.getOutputStream();
wb.write(out);
out.close();



return null;
}

}


le resultat dans IE

ÐÏࡱá;þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot EntryÿÿÿÿÿÿÿÿWorkbookÿÿÿÿÿÿÿÿÿÿÿÿÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÓÌAá°Áâ\pantoine B°a=œ¯¼=h\:¾#8X@"·Ú1ÈÿArial1ÈÿArial1ÈÿArial1ÈÿArial"$"#,##0_);\("$"#,##0\)!"$"#,##0_);[Red]\("$"#,##0\)""$"#,##0.00_);\("$"#,##0.00\)'""$"#,##0.00_);[Red]\("$"#,##0.00\)7*2_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_).))_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)?,:_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)6+1_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_)àõÿ À àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ à À à+õÿ øÀ à)õÿ øÀ à,õÿ øÀ à*õÿ øÀ à õÿ øÀ “€ÿ“€ÿ“€ÿ“€ÿ“€ÿ“€ÿ`…| new sheetŒüThis is a stringÿ W » ÌÁ  dü©ñÒMbP?_*+‚€%ÿÁƒ„¡"d,,à?à?Uð?333333ó?ý ÿ>¶@ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿ


Cela n'a pas l'air de venir de POI car on retrouve les informations du fichier excel dans le code binaire ci dessus. Donc pour moi c'est un probleme d'outputstream. Eventuellement de la fonction POI write(). je suis dessus depuis un moment et c'est assez urgent pour moi merci pour l'aide.
A voir également:

9 réponses

goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
12 août 2008 à 11:52
Bonjour,

tente

/ Or do it on one line.
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("This is a string" );
row.createCell((short)3).setCellValue(true);
// Write the output
OutputStream out = response.getOutputStream();
wb.write(out);

//Le flush te permet d'être sûr de bien tout écrire dans le fichier
wb.flush();
wb.close();

out.close();
0
Toinou87 Messages postés 28 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 8 août 2010
12 août 2008 à 12:06
non c'est pas ca (je suppose au fait que ct out.flush() et non wb.flush() que tu voulais dire). Mais je pense pas vraiment que ca vienne du code etant donné que si je mets ce code dans une autre appli en changeant une de mes actions struts vers celle ci, ca marche. Je pense plutot que c la config de l'appli mais j'ai deja tester de changer les librairies donc j'ai pas d'autres idees
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
12 août 2008 à 12:09
Hum ou bien sûr out .flush.

Je n'ai aps fait attention mais teste le ça te coute rien et tu seras sûr que l'outputstream sera bien vidé dans le fichier
0
Toinou87 Messages postés 28 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 8 août 2010
12 août 2008 à 12:16
je l'ai testé avant de te repondre
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
12 août 2008 à 12:21
Hum bizarre....

Surtout si ça fonctionne ailleurs
0
Toinou87 Messages postés 28 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 8 août 2010
13 août 2008 à 10:28
un de mes collegues a trouvé la solution. cela venait de "inline" dans le header qu'il fallait mettre en "attachement".
Mais on ne comprend pas pourquoi le meme code marchait sur d'autres appli
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
13 août 2008 à 10:32
L'environnement peut-être.

EN tout cas content de voir que tu as finis par trouver et désolé de ne pas avoir été d'une grande aide pour le coup
0
Toinou87 Messages postés 28 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 8 août 2010
13 août 2008 à 12:36
merci, moi aussi je suis content d'etre debloquer ^^ mais bon pour la dead line de cette semaine ca va etre chaud vu que ca m'a bouffé un jour et demi ^^
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
13 août 2008 à 14:23
Hum je connais ce genre de soucis étant dans de la prog également.

Bon courage alors sachant qu'il te reste que demain vu que vendredi est férié
0