六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 46|回复: 0

怎么在JSP里做使显示的数据表导出EXCEL

[复制链接]

升级  3.33%

62

主题

62

主题

62

主题

举人

Rank: 3Rank: 3

积分
210
 楼主| 发表于 2013-1-15 02:41:36 | 显示全部楼层 |阅读模式
package   com.hull.servlet;   
   
  import   jxl.*;   
  import   jxl.write.*;   
  import   jxl.format.BorderLineStyle;   
  import   java.io.*;   
  import   javax.servlet.http.*;   
  import   javax.servlet.*;   
  import   java.sql.ResultSet;   
  import   java.sql.SQLException;   
   
  import   com.hull.db.pool.SqlServerPool;   
  import   com.hull.tools.StringConverter;   
   
  /**   
    *   <p>Title:   hull</p>   
    *   <p>Description:   read   and   write   excel   with   java</p>   
    *   <p>Copyright:   Copyright   (c)   2004</p>   
    *   <p>Company:   hz-group</p>   
    *   @author   wangdong   
    *   @version   1.0   
    */   
   
  public   class   JExcel   extends   HttpServlet{   
      private   String   excelFilePath;   
      private   WritableWorkbook   wbbook;   
      //private   FileOutputStream   os;   
      private   OutputStream   os;   
      private   WritableCellFormat   wcf,wcf_title;   
      private   WritableSheet   ws;   
        
      private   String   title;   
      private   int   sheetid;   
      private   long   shipid;   
        
        
      public   void   init(ServletConfig   config)   throws   ServletException{   
          super.init();   
          excelFilePath   =   config.getInitParameter("excelFilePath");   
          if(excelFilePath   ==   null){   
              throw   new   ServletException("不能创建excel文件!");   
          }   
      }     
        
      public   void   doGet(HttpServletRequest   request,HttpServletResponse   response)   
          throws   ServletException,IOException{   
          response.setContentType("application/vnd.ms-excel");   
          title   =   request.getParameter("shipname");   
          shipid   =   (new   Long(request.getParameter("shipid"))).longValue();   
            
          os   =   response.getOutputStream();   
            
          wbbook   =   Workbook.createWorkbook(os);   
            
          sheetid   =   (wbbook.getSheets()).length;   
            
          try{   
              wcf   =   new   WritableCellFormat();   
              wcf.setAlignment(Alignment.RIGHT);   
              wcf.setBorder(Border.ALL,BorderLineStyle.THIN);   
              wcf.setWrap(true);   
               
              wcf_title   =   new   WritableCellFormat();   
              wcf_title.setAlignment(Alignment.CENTRE);   
              wcf_title.setBorder(Border.ALL,BorderLineStyle.THIN);   
          }   
          catch(WriteException   e){   
          }   
            
          ws   =   wbbook.createSheet(StringConverter.EnToChinese(title),sheetid+1);   
          ws.setColumnView(0,20);   
          ws.setColumnView(1,20);   
          ws.setColumnView(2,20);   
          ws.setColumnView(3,20);   
          try{   
              /**   
                *   写标题   
                */   
              jxl.write.Label   labelTitle   =   new   jxl.write.Label(0,0,StringConverter.EnToChinese(title),wcf_title);   
              ws.mergeCells(0,0,3,0);   
              ws.addCell(labelTitle);   
              /**   
                *   写入船型内容   
                */   
               
              SqlServerPool   pool   =   new   SqlServerPool();   
          int   i=0,j=1,work=1;   
          String   strsql   =   "select   a.*,b.refvalue   from   shipref   a   left   join   refcontent   b   on   b.refid=a.id   "+   
                                          "where   a.shipid="+shipid+"   order   by   a.reftype   desc";   
            
              ResultSet   rs   =   pool.executeQuery(strsql);   
              while(rs.next()){   
               
                  if(rs.getString("reftype").equals("文本")){   
                      jxl.write.Label   typeLabel   =   new   jxl.write.Label(0,j++,rs.getString("refname"),wcf);   
                      ws.addCell(typeLabel);   
                      jxl.write.Label   valueLabel   =   new   jxl.write.Label(1,j-1,rs.getString("refvalue"),wcf);   
                      ws.mergeCells(1,j,3,j);   
                      ws.addCell(valueLabel);   
                  }   
                  else{   
                  if(i%2   ==   1){   
                      jxl.write.Label   typeLabel   =   new   jxl.write.Label(0,j,rs.getString("refname"),wcf);   
                      ws.addCell(typeLabel);   
                      jxl.write.Label   valueLabel   =   new   jxl.write.Label(1,j,rs.getString("refvalue"),wcf);   
                      ws.addCell(valueLabel);   
                  }   
                  else{   
                      jxl.write.Label   typeLabel   =   new   jxl.write.Label(2,j++,rs.getString("refname"),wcf);   
                      ws.addCell(typeLabel);   
                      jxl.write.Label   valueLabel   =   new   jxl.write.Label(3,j-1,rs.getString("refvalue"),wcf);   
                      ws.addCell(valueLabel);   
                  }   
                  work   =   j;   
                  }   
                  i++;   
              }   
               
              if(work%2   ==   1){   
                  jxl.write.Label   additional1   =   new   jxl.write.Label(2,work,"",wcf);   
                  ws.addCell(additional1);   
                  jxl.write.Label   additional2   =   new   jxl.write.Label(3,work,"",wcf);   
                  ws.addCell(additional2);   
              }   
               
              wbbook.write();   
              wbbook.close();   
              os.flush();   
              os.close();   
          }   
          catch(Exception   ex){   
          }   
      }   
  }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表