我使用poi在服务器端生成了excel文件.xls,查询到的数据能正确存在其中,保存在本机(即服务器上)磁盘上D:\\test.xls,我想实现客户端访问网页时,也能打开或保存这个文件,是不是需要下载服务器端的那个文件,还是需要怎么做呢?我的初衷是使用这两句来实现
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename=\""+"d:\\test.xls"+"\"");
请高手们看看我的程序是不是没有和服务器端保存的文件联系上呢?怎么才能联系上,请指教,多谢了,问题解决马上给分,不够的话可以再加,再次感谢!!
我的代码如下:
<% 
String url = "jdbc:odbc:pypdw";
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String user = "";
String pwd = ""; 
try {
Class.forName(driver);
Connection conn=DriverManager.getConnection(url,user,pwd);
Statement stmt =conn.createStatement();
String q="select * from BDZ_Info_Table";
ResultSet rs =stmt.executeQuery(q);FileOutputStream fos = new FileOutputStream("d:\\test.xls");
 HSSFWorkbook wb = new HSSFWorkbook(); 
 HSSFSheet s = wb.createSheet();
 wb.setSheetName(0, "first sheet", HSSFWorkbook.ENCODING_UTF_16);
 for(short i=0; i<50; i++) {
  HSSFRow row = s.createRow(i);
  for(short j=0; j<50;j++) {
   HSSFCell cell=row.createCell(j);
  
 }
 } 
     short n=0;
     short m=0;
     while(rs.next()){
      short m1=(short)(m+1);
        String ss0=rs.getString(1);
      String ss1 =rs.getString(2);       
      String ss2=rs.getString(3);
      HSSFRow row= s.getRow(n);
        HSSFCell cell=row.getCell(m);
      cell.setEncoding((short)1);
      cell.setCellValue(ss0);            
      cell=row.getCell(m1);
      cell.setEncoding((short)1);     
      cell.setCellValue(ss1);    
      n++;     
     } 
wb.write(fos);
fos.close(); response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename=\""+"d:\\test.xls"+"\"");rs.close();
stmt.close();
conn.close(); 

 fileInputStream.close(); 
 out.close(); } 
catch (Exception e) { 
e.printStackTrace(); 
} %>

解决方案 »

  1.   

    忘了说了,这个程序在客户端运行的结果是,保存出空白的.xls文件,没有查询到的数据
      

  2.   

    先在服务器端生成一个xls文件,然后再搞一个下载的功能实现就OK了
      

  3.   

    写用out.write
    如 
    while(rs.next()){
    out.write(rs.getString());
      

  4.   

    response.setContentType("text/html;charset=UTF-8");
    response.setHeader("Content-disposition",toUtf8String(filename));
    response.getWriter().write(文档对象.toString());