Newsgroup: it.comp.java
Titolo: Creare Excel con POI

Salve,
sto creando una jsp che a partire da dati prelevati da un DB generi un
excel con diversi fogli.
Sono riuscito a fare il tutto... richiamo la jsp e mi esce il
messaggio su dove voglio salvare il file ecc. Quello che mi da
fastidio è che nel log di tomcat 5 ottengo
- Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been
called for this response
	at org.apache.catalina.connector.Response.getWriter(Response.java:
599)
	at org.apache.catalina.connector.ResponseFacade.getWriter
(ResponseFacade.java:195)
	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:
124)
	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer
(JspWriterImpl.java:117)
	at org.apache.jasper.runtime.PageContextImpl.release
(PageContextImpl.java:191)
	at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext
(JspFactoryImpl.java:115)
	at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext
(JspFactoryImpl.java:75)
	at org.apache.jsp.shared.customizedjsp.EstrazioneExcel_jsp._jspService
(EstrazioneExcel_jsp.java:174)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service
(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile
(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:148)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:
199)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:
282)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754)
	at org.apache.jk.common.ChannelSocket.processConnection
(ChannelSocket.java:684)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt
(ChannelSocket.java:876)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:684)
	at java.lang.Thread.run(Unknown Source)
Anche se il tutto sembra funzionare correttamente...dove è l'errore???
Manda parte del codice per completezza:
<VARIE DICHIARAZIONI>
	response.setContentType("application/ms-excel");
	response.setCharacterEncoding("UTF-8");
	response.setHeader("content-disposition", "attachment; filename=
\""+nomefile+"\"");
	HSSFWorkbook wb = new HSSFWorkbook();
<Creazione del file>
       OutputStream resp = response.getOutputStream();
       wb.write(resp);
       resp.close();
       resp.flush();
Fine
Ringrazio tutti per l'aiuto

        resp.flush();
A parte che l'ordine è errato... casomai dovresti prima fare la flush
() e poi la close()...
A parte che la flush() prima della close() non è necessaria...
Credo che il tuo problema stia proprio nella close(): visto che non
sei stato tu ad aprire lo stream di scrittura, non devo essere tu a
farlo, lascialo fare all'application server