一种用JavaScript来做var ExcelApp=new ActiveX("Excel.Application")
一种直接生成CSV格式.作为MIME类型text/csv返回给浏览器
还有一种一个称作POI的新的Jakarta项目组中最成熟的部分,POI中Excel组件命名为HSSF.感觉都不太妥.最好自己写个ActiveX来做.

解决方案 »

  1.   

    请把问题说的再清楚一些,是把用JSP显示的纪录导出到EXCEL,还是把数据库中的数据导出到EXCEL。我有一个方法可以把JSP显示的纪录导到EXCEL。
      

  2.   

    我现在用的是servlet来实现
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
      {
         HttpSession session = request.getSession();
          bos = response.getOutputStream();
          response.setContentType("application/octet-stream");
          response.setHeader("Content-disposition", "attachment; filename=gsqd.xls");
          try
          {
             createFile0(session,request);
          }
          catch(Exception ex)
          {
              System.out.println("参数传递错误2!");
          }
          finally
          {
              if(bos != null) bos.close();
          }
      }
      
      public void createFile0(HttpSession session,HttpServletRequest request) throws Exception
       {     strBuf.append("别号\t号\t人名称\t名称\n");
        while(rs.next())
        {
            strBuf = new StringBuffer("");
            strBuf.append(rs.getString("gsnsrsbh")==null?"   "+"\t":rs.getString("gsnsrsbh")+" \t");
            strBuf.append(rs.getString("dsnsrsbh")==null?"   "+"\t":rs.getString("dsnsrsbh")+" \t");
            strBuf.append(db.convert(rs.getString("gsnsrmc"))+" \t");
            strBuf.append(db.convert(rs.getString("dsnsrmc"))+" \n");
            str = strBuf.toString();
            bos.write(str.getBytes());
        }   
    你看一看意路吧,我们是出现一对话框将用户下载的
      

  3.   

    楼上写的方法是用字节流输出,但execl是特殊二进制格式的文件,它能识别吗?这恐怕不是简单把文件命名为*.exl就可以的吧,做过测试了吗????期待回答?
      

  4.   

    //还必须修改IE的设置:工具--》选项--》安全--》自定义级别--》启用前三项
    function AutomateExcel()
    {
          var i,j;
       // Start Excel and get Application object.
          var oXL = new ActiveXObject("Excel.Application");      oXL.Visible = true;   // Get a new workbook.
          var oWB = oXL.Workbooks.Add();
          var oSheet = oWB.ActiveSheet;
           //tblout页面表格的ID
         for(i=0;i<tblout.rows.length;i++)
    for(j=0;j<tblout.rows(i).cells.length;j++)
    oSheet.Cells(i+1, j+1).Value = tblout.rows(i).cells(j).innerText
       
          oXL.Visible = true;
          oXL.UserControl = true;
    }
      

  5.   

    去http://expert.csdn.net/Expert/topic/2405/2405656.xml?temp=.1833917看看吧,我在那里说了的,有原代码,用了POI
      

  6.   

    我来说说我所用的查询并输出到excel法子吧,有什么问题请大家指出!
    涉及到3个页面:查询页面:1.jsp、查询结果:2.jsp、输出到excel:toExcel.jsp。
    (1)在1.jsp里,把表单的method设为get,action为2.jsp。
    (2)在2.jsp里,添加一个JS函数toExcel():
      <script language="JavaScript">
        function toExcel(){
            window.open("toExcel.jsp?<%=request.getQueryString()%>","","");
        }
      </script>
      然后页面上加一个按钮调用该函数。
    (3)在toExcel.jsp里,在文件上部加入代码:
        <%
            response.setContentType("application/vnd.ms-excel;charset=gb2312");
            response.setHeader("Content-Disposition", "filename=" + "queryResult");
        %>
        至于文件的内容,把2.jsp里查询得到的表格复制一遍得了。