Ho provato la seconda strada scrivendo questo codice:
codice:
ByteArrayOutputStream outByteStream = 
new ByteArrayOutputStream();

            workbook.write(outByteStream);

            
byte [] outArray = outByteStream.toByteArray();

            response.setContentType(
"application/OCTET-STREAM");

            response.setContentLength(outArray.
length);

            response.setHeader(
"Expires:", "0"); 

            response.setHeader(
"Content-Disposition", "attachment; filename=testxls.xls");

            OutputStream outStream = response.getOutputStream();

            outStream.write(outArray);

            outStream.flush();
ma ancora nulla!! il file testxls.xls no ne vuole sapere di essere scaricato

Quote Originariamente inviata da andbin Visualizza il messaggio
Il problema può essere il fatto di non aver inviato il Content-Length, perlomeno con certi browser ci potrebbe essere.

Quindi:
- scarichi il documento su un file temporaneo, poi sapendo la lunghezza invii il Content-Length e poi fai lo streaming in output del file.
oppure
- scarichi il documento in memoria su un ByteArrayOutputStream, poi sapendo la lunghezza invii il Content-Length e poi fai lo streaming in output del ByteArrayOutputStream usando il suo writeTo(OutputStream out).

A tua scelta ....