原本是想实现B/S结构下在客户端生成excel文件,有人提议先在服务器端生成excel文件,然后将excel文件转为outputStrean流,再通过response将其输出到客户端,这样客户端会提示“打开还是另存为”,就能实现了。
现在我已经生成了excel文件,但以后如何实现,哪位能给具体的指点。我对response的用法实在是白痴,假设excel文件名为"test.xls".

解决方案 »

  1.   

    response.getgetOutputStream()得到ServletOutputStream对象,调用这个对象的write(从java.io.OutputStream类继承来的)方法,向输出流里写数据。最好在这之前通过response的setHeader方法,设置一些http头,然后客户端就可以顺利西线下载了。调用response.setContentLength(文件大小,单位字节);调用response.setHeader("Content-type","application/x-msexcel");调用response.setHeader("Content-Disposition","inline; filename=\"test.xls\"");//在线打开
    或者
    response.setHeader("content-disposition","attachment;filename=\"test.xls\"");//下载
      

  2.   

    我的excel文件(test.xls)已经写好了,里面包含着所需要的数据,我的目的是把它传到客户端.
    是只在jsp文件(testexcel.jsp)中写
    <%@ page contentType="text/html; charset=GBK" %>
    <html> 
    <%
    // 设置响应头和下载保存的文件名
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-disposition", "attachment;filename=test.xls");
    %>
    </body> 
    </html>
    这样当我在tomcat中打开testexcel.jsp页面就会弹出下载对话框吗?
    假设我把test.xls放在和testexcel.jsp同一级目录中
      

  3.   

    写一个javaBean,利用JExcelApi来动态生成excel文档,我这里写一个最简单的,示意性的。复杂的你可能还要查询数据库什么的。///////////////////////////Test.java///////////////////////////////////////////
    package com.jagie.test;
    import java.io.*;
    import jxl.*;
    import jxl.write.*;
    import jxl.format.*;
    import java.util.*;
    import java.awt.Color;public class Test{
     public static void writeExcel(OutputStream os) throws Exception {
      jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
      jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1", 0);
      jxl.write.Label labelC = new jxl.write.Label(0, 0, "我爱中国");
      ws.addCell(labelC);
      jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20, WritableFont.BOLD, false,
      UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.GREEN);
      jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
      wcfFC.setBackground(jxl.format.Colour.RED);
      labelC = new jxl.write.Label(6, 0, "中国爱我",wcfFC);
      ws.addCell(labelC);
      //写入Exel工作表
      wwb.write();
      //关闭Excel工作薄对象
      wwb.close();
     } //最好写一个这样的main方法来测试一下你的这个class是否写好了。
     public static void main(String[] args)throws Exception{
      File f=new File("kk.xls");
      f.createNewFile();
      writeExcel(new FileOutputStream(f));
     }
    }   写一个jsp,来利用Test这个javabean输出excel文档。///////////////////////////test_excel.jsp//////////////////////////<%@page import="com.jagie.test.Test" %>
    <%
     response.reset();
     response.setContentType("application/vnd.ms-excel");
     Test.writeExcel(response.getOutputStream());
    %> 
      

  4.   

    response.setContentType("application/x-msexcel;charset=gb2312");好象也可以啊
      

  5.   


    first last email
    second last add
    <%@ page contentType="application/vnd.ms-excel"%>
    就这样更简单。。呵呵
      

  6.   

    需要这么复杂吗?
    既然在服务器上生成了excel文件,直接通过网址连接就可以了哦.
    例如:
    使用的服务器是tomcat,
    对应的网站文件是在webapps/test/
    网站运行的路径是http://lcoalhost:8080/test/test.jsp
    生成的excel文件在webapps/test/
    假设excel文件名为"test.xls".
    那么要打开文件直接就是http://lcoalhost:8080/test/test.xls