Newsgroup: it.comp.java
Titolo: Download file Excel

Ho il seguente problema.
In una pagina JSP a seconda della scelta che mi fanno creo un file Excel e
poi metto il link a questo file sulla pagina.
Il problema è che non mi apre il file con Excel ma come file di testo (un
pasticcio).
Questo è il codice che uso, faccio un banale link al foglio.
<A href="./output.xls"> Foglio Excel </A>
Come faccio a dirgli di aprire in automatico Excel?
Dipende dal contentType?
Avete un esempio che mi aiuti!!!
Grazie 
Gianluca
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Premetto che non ho mai fatto link diretti a files excel, nel senso che
non li ho mai depositati sul fileSystem, ma gestito direttamente
l'OutputStrem della servlet, comunque il codice che ho usato nella jsp è
il seguente:
response.setContentType("application/ms-excel; name=tuo_nome");
Sembra però che il parametro name non influisca, ovvero il nome propsosto
se si cerca di salvarlo su disco è il nome della jsp(con estensione xls se
il browser è Netsacape, jsp se Explorer); per il resto tutto OK.
ti consiglio, se il file excel è temporaneo, di gestire direttamente
l'OutputStream della servlet, ti evita inutili problemi di pulizia e
sopratutto sicurezza.
ammesso che sugui questa strada, se riesci a risolvere il problemino del 
salvataggio puoi postarlo?
grazie ciao


Riesco a salvare il file ma non ad aprirlo con Excel.
Però l'idea di crearlo in instantaneo mi risolve il problema dei conflitti
tra file creati.
Mi potresti dare una dritta per modificare il codice per fare ciò?
Sto utilizzando delle classi jxl per creare il file excel.
Come faccio a spedire quello che creo in un OutputStream ?
Ecco il codice della mia JSP:
<%
  WritableWorkbook workbook = Workbook.createWorkbook(new
File("output.xls"));  
  WritableSheet sheet = workbook.createSheet("First Sheet", 0);  
     Label label= new Label(0,1,"pippo");
     sheet.addCell(label);
   workbook.write(); 
   workbook.close(); 
  } %>
Grazie 1000.


 Mi potresti dare una dritta per modificare il codice per fare ciň?


 Avete un esempio che mi aiuti!!!
potresti creare una table e metterci dentro i valori, tipo
<table><tr><td><%=quel che vuoi tu%> eccetera.
mettendo in testa al file jsp questa riga
<%@ page contentType="application/vnd.ms-excel" %>
ti apre automaticamente excel all'interno di ie o nn, forse pure con con
opera6.

Forse non ho capito bene.
Ho sostituito il codice e mi da il seguente errore:
Generated servlet error:
C:\Tomcat\work\Standalone\localhost\menu\Excel$jsp.java:103: Incompatible
type for method. Can't convert javax.servlet.jsp.JspWriter to
java.io.OutputStream. 
WritableWorkbook workbook = Workbook.createWorkbook(out);
 
                                                     ^ 
Ecco anche il codice della JSP :
<%@ page import="java.sql.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.util.*" %>
<%@ page import="it.marazzi.test.*" %>
<%@ page import="java.io.File" %>
<%@ page import="java.util.Date" %>
<%@ page import="jxl.*" %> 
<%@ page import="jxl.write.*" %> 
<% response.setContentType("application/ms-excel; name=output.xls");%>
<%
//  WritableWorkbook workbook = Workbook.createWorkbook(new
File("output.xls"));  
  WritableWorkbook workbook = Workbook.createWorkbook(out);  
  WritableSheet sheet = workbook.createSheet("First Sheet", 0);  
  String var_v = ""; 
  int count = 0; 
  if (request.getParameter("v") != null) var_v =
(request.getParameter("v")).toUpperCase(); 
  String var_r = request.getParameter("r"); 
  if (request.getParameter("r") == null) var_r="1";
  if (var_v.length() > 0) { 
   String var_where = ""; 
   if (var_r.equals("1")) var_where = " where descr_cognome like'" + var_v
+ "%'"; 
   if (var_r.equals("2")) var_where = " where descr_nome like '" + var_v +
"%'"; 
   if (var_r.equals("3")) var_where = " where num_tel_breve like '" +
var_v + "%'"; 
   String var_t = ""; 
   if (var_r.equals("1")) var_t = "cognome"; 
   if (var_r.equals("2")) var_t = "nome"; 
   if (var_r.equals("3")) var_t = "numero"; 
   Class.forName("COM.ibm.db2.jdbc.app.DB2Driver"); 
   Connection conn =
java.sql.DriverManager.getConnection("jdbc:db2:DB2PHOST", "APRFR",
"NOVEM"); 
   Statement statement = conn.createStatement(); 
   String query = "select * from sysdb2.ufonh10" + var_where + " order by
descr_cognome, descr_nome"; 
   ResultSet rs = statement.executeQuery(query); 
   boolean fnd = false; 
   int f = 0; 
   while (rs.next()) { 
     if (fnd == false) { 
       fnd = true; 
     } 
     ++count; 
     Label label;
     label= new Label(0,count,rs.getString("descr_cognome"));
     sheet.addCell(label);
     label= new Label(1,count,rs.getString("descr_nome"));
     sheet.addCell(label);
     label= new Label(2,count,rs.getString("num_tel_breve"));
     sheet.addCell(label);
     label= new Label(3,count,rs.getString("descr_local_tel"));
     sheet.addCell(label);
     label= new Label(4,count,rs.getString("descr_local"));
     sheet.addCell(label);
     label= new Label(5,count,rs.getString("descr_num_tel"));
     sheet.addCell(label);
     label= new Label(6,count,rs.getString("num_tel_nparz"));
     sheet.addCell(label);
     f = 1 - f; 
   } 
   conn.close(); 
   workbook.write(); 
   workbook.close(); 
  } 
  out.write(String.valueOf(count));
%>
Grazie ancora.
Adesso provo a dare un'occhiata al link che mi hai dato.


 C:TomcatworkStandalonelocalhostmenuExcel$jsp.java:103: Incompatible


Grazie.
Cosě funziona. L'unica cosa mi da al file il nome della pagina jsp quindi
devo salvarlo e dargli il nome pippo.xls.
Mi sembra di avere letto che č un problema di IE.
Sai se esiste una soluzione?
Adesso provo a utilizzare le POI.
Ancora grazie per l'aiuto.
Gianluca
