taink 发表于 2013-1-15 02:41:06

在struts中应用JXL读写EXCEL

在struts中应用JXL读写EXCEL参考,只不过我的操作有点不同,我要实现的是将页面上显示的表格数据导出到EXCEL中,由于表头过于复杂,我不想在EXCEL中直接写,就想先把表头写好,在导出的时候,先去读这个文件,然后继续填充数据,实现方法如下:  
  
  package   com.lonwin.struts.action;  
  
  import   java.io.File;  
  import   java.io.FileOutputStream;  
  import   java.io.OutputStream;  
  
  import   java.util.ArrayList;  
  
  import   javax.servlet.ServletOutputStream;  
  import   javax.servlet.http.HttpServletRequest;  
  import   javax.servlet.http.HttpServletResponse;  
  
  import   org.apache.struts.action.Action;  
  import   org.apache.struts.action.ActionForm;  
  import   org.apache.struts.action.ActionForward;  
  import   org.apache.struts.action.ActionMapping;  
  
  import   com.lonwin.struts.form.ShuiXiDataCollectionBean;  
  
  
  //import   com.lonwin.util.SaveParamBean;  
  
  import   jxl.*;  
  
  import   jxl.write.*;  
  import   jxl.write.Number;  
  
  
  
  /**   
   *   created   on   04-29-2004  
   *   
   *   功能:实现导出EXCEL功能  
   *   @struts:action   validate="true"  
   */  
  public   class   ExcelexportAction   extends   Action   {  
  
  //   ------------------------------------------   Instance   Variables  
  private   static   final   String   CONTENT_TYPE   =   "application/vnd.ms-excel";   
  //   --------------------------------------------   Methods  
  
  /**   
   *   Method   execute  
   *   @param   ActionMapping   mapping  
   *   @param   ActionForm   form  
   *   @param   HttpServletRequest   request  
   *   @param   HttpServletResponse   response  
   *   @return   ActionForward  
   *   @throws   Exception  
   */  
  public   ActionForward   execute(  
  ActionMapping   mapping,  
  ActionForm   form,  
  HttpServletRequest   request,  
  HttpServletResponse   response)  
  throws   Exception   {  
  
  response.setContentType(CONTENT_TYPE);  
  ArrayList   array   =   new   ArrayList();  
  array   =   (ArrayList)request.getSession().getAttribute("collectionsPWL");  
  
  System.out.println("得到记录"+array.size()+"个   !");  
  
  
  
  //读excel文件  
  
  try   {  
  
  
  File   tempFile=new   File("C:\\shuibao\\WorkProgram\\ExcelHeader\\shuixiPWL.xls");  
  
  
  
  //创建只读的Excel工作薄的对象  
      Workbook   wb   =   Workbook.getWorkbook(tempFile);   
  
  //创建可写入的Excel工作薄对象  
  //OutputStream   os   =   new   FileOutputStream(targetfile);  
  //      WritableWorkbook   rwb   =   Workbook.createWorkbook(targetfile,wb);  
  
  ServletOutputStream   os   =   response.getOutputStream();  
  WritableWorkbook   rwb   =   Workbook.createWorkbook(os,wb);  
  
  //读取第一张工作表  
      WritableSheet   ws   =   rwb.getSheet(0);   
  
  
  //获得第一张工作表的第一个单元格对象  
  WritableCell   wc   =   ws.getWritableCell(0,   0);  
  
  System.out.println("读出值了吗?"+wc.getContents()+"    !");  
  
  
  
  //向表中添加记录  
  int   rows=1;//定义默认的行  
  for(int   i=0;i<array.size();i++){  
  ShuiXiDataCollectionBean   collections   =(ShuiXiDataCollectionBean)array.get(i);  
  //水系名称  
  Label   lable0   =   new   Label(0,rows,collections.getName());     
  ws.addCell(lable0);  
  rows=rows+1;  
  }  
  
  
  
  
  //写入Excel对象  
  rwb.write();  
  
  //关闭可写入的Excel对象  
  rwb.close();  
  //关闭只读的Excel对象  
  wb.close();  
  
  
  
  
  }   catch   (Exception   e)   {  
     throw   new   Exception("坏了,文件没找着呀~~!");  
  }   
  
  return   new   ActionForward(mapping.getInput());  
  }  
  
  }
 
 
//////////////////////////////////////////////////////////////////////////////
http://topic.csdn.net/t/20040508/11/3041188.html
页: [1]
查看完整版本: 在struts中应用JXL读写EXCEL