`

JXL生成excel实战

 
阅读更多

需求:

       完成一个简单excel的生成和导出

    

       前台代码:

       var flightStart = $("#flightDate1").val();
            var flightEnd = $("#flightDate2").val();
            var segment = $("#segment").val();
            var flightNo = $("#flightNo").val();
            var isAuto = $("#isAuto").val();
            var isEffect = $("#isEffect").val();
            var autocap = $("#autocap").val();
            var  requestPath =   "<%=path%>/pwr/assist/exportThreshold.action?speType.isEffect="+isEffect+"&speType.isAuto="+isAuto ;
            if(flightStart!="" && flightStart!= null){
             requestPath = requestPath +"&speType.flightStart="+flightStart ;
            }
            if(flightEnd!="" && flightEnd!= null){
             requestPath = requestPath +"&speType.flightEnd="+flightEnd ;
            }
            if(segment!="" && segment!= null){
             requestPath = requestPath +"&speType.segment="+segment ;
            }
            if(flightNo!="" && flightNo!= null){
             requestPath = requestPath +"&speType.flightNo="+flightNo ;
            }
            if(autocap!="" && autocap!= null){
             requestPath = requestPath +"&speType.autocap="+autocap ;
            }   

            form1.action= requestPath ;
        $("#form1").submit();              
       //window.location.href=requestPath;

 

       后台代码:

 
 public String exportThreshold() throws Exception{
  try
  {  
   List<SpeFlightType> resultlist = thresholdService.getSpeFlightTypeList(speType);
  
   OutputStream os = response.getOutputStream();// 取得输出流  
         response.reset();// 清空输出流  
         response.setHeader("Content-disposition", "attachment; filename=result.xls");// 设定输出文件头  
         response.setContentType("application/msexcel");// 定义输出类型         
         WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件  
       
         WritableSheet wsheet = wbook.createSheet("子阀值数据", 0); // sheet名称 
        
         //表头列名
      String [] titles  ={"开始日期" , "结束日期" , "航班号" , "航段" , "自动收放舱" ,"是否生效" ,
       "舱位序列" , "阀值类型"  ,  "是否加座位" ,"操作时间", "优先级"  ,"对比航班号" ,"对比时刻区间" ,
       "对比航空公司","比对方式" ,"客座率差值区间"  ,"折扣率差值区间" ,"周期"  ,"提前天数" ,"状态" } ;
   
    for(int i = 0 ; i < titles.length ; i++){
        Label label = new Label(i, 0,titles[i] ); 
        wsheet.addCell(label); 
      }
   
    int i = 1 ;//行数控制   
    if(resultlist.size()>0){

    SpeFlightType speFlightType = null ;
     for (int j = 0 ; j < resultlist.size() ; j ++){          
       speFlightType = resultlist.get(j);
    TurnListToSet getList = new TurnListToSet();
    List kzList = getList.getKZlist(speFlightType.getKeZuoList(),true);
    List tbList = getList.getTBlist(speFlightType.getTongBiList(),true);
    //竟比子阀值写入EXCEL
    if(kzList.size()>0){
                    for(int m  = 0 ; m < kzList.size() ; m++){
                      ThreshKeZuoEntity threshKeZuoEntity = (ThreshKeZuoEntity)kzList.get(m);
                      int k = createNewLine(wsheet, i, speFlightType, "1") ;
                      wsheet.addCell(new Label(k++, i, ""+threshKeZuoEntity.getPriority()));
                      wsheet.addCell(new Label(k++, i, threshKeZuoEntity.getFlightNo()));
                      String compareDate = "" ;
                      if(threshKeZuoEntity.getTimeSpan1()!=null){
                       compareDate = threshKeZuoEntity.getTimeSpan1();
                      }
                      if(threshKeZuoEntity.getTimeSpan2()!=null){
                       compareDate = compareDate+"-"+ threshKeZuoEntity.getTimeSpan2();
                      }                    
                      wsheet.addCell(new Label(k++, i, compareDate));
                      wsheet.addCell(new Label(k++, i, threshKeZuoEntity.getIncludeAirline()));
                      if("1".equals(threshKeZuoEntity.getRateType()) ){
                       wsheet.addCell(new Label(k++, i, "最低"));
                      }else if("2".equals(threshKeZuoEntity.getRateType()) ){
                       wsheet.addCell(new Label(k++, i, "平均"));
                      }else if("3".equals(threshKeZuoEntity.getRateType()) ){
                       wsheet.addCell(new Label(k++, i, "最高"));
                      }
                      wsheet.addCell(new Label(k++, i,threshKeZuoEntity.getDiscountRange() ));
                      wsheet.addCell(new Label(k++, i,threshKeZuoEntity.getDiscount() ));
                      wsheet.addCell(new Label(k++, i,threshKeZuoEntity.getWeek() ));
                      wsheet.addCell(new Label(k++, i,threshKeZuoEntity.getAheadDate() ));
                      wsheet.addCell(new Label(k++, i, "1".equals(threshKeZuoEntity.getIsEffect()) ? "生效":"未生效")); 
                      i++;
                    }
    }
    
    //同比子阀值写入EXCEL
    if(tbList.size()>0){
                    for(int m  = 0 ; m < kzList.size() ; m++){
                      ThreshTongBiEntity threshTongBiEntity = (ThreshTongBiEntity)tbList.get(m);
                      int k = createNewLine(wsheet, i, speFlightType, "2") ;
                     
                      wsheet.addCell(new Label(k++, i, ""+threshTongBiEntity.getPriority()));
                      wsheet.addCell(new Label(k++, i, ""));        
                      wsheet.addCell(new Label(k++, i, ""));
                      wsheet.addCell(new Label(k++, i, ""));
                      wsheet.addCell(new Label(k++, i, ""));                     
                      wsheet.addCell(new Label(k++, i,threshTongBiEntity.getKezuolv() ));
                      wsheet.addCell(new Label(k++, i,threshTongBiEntity.getDiscount() ));
                      wsheet.addCell(new Label(k++, i,threshTongBiEntity.getWeek() ));
                      wsheet.addCell(new Label(k++, i,threshTongBiEntity.getAheadDate() ));
                      wsheet.addCell(new Label(k++, i, "1".equals(threshTongBiEntity.getIsEffect()) ? "生效":"未生效")); 
                      i++;
                    }
    }
    
    if(tbList.size() == 0 && kzList.size()==0){
      createNewLine(wsheet, i, speFlightType ,"3") ;
      i++;
    }
     
     }
        speFlightType = null;
        LOG.info("export into excel success  and has "+ i +" row export. ");
     }
   
  // 主体内容生成结束          
  wbook.write(); // 写入文件  
  wbook.close(); 
  os.close(); // 关闭流
  return null;
  }
  catch(Exception ex){
    ex.printStackTrace();
    throw new Exception();
  
  }
}


 /**
  *
  * @param wsheet 
  * @param i 传入写到第几行
  * @param speFlightType
  * @param type
  * @return 返回已经写到excel的第几列
  * @throws RowsExceededException
  * @throws WriteException
  *
  */
 private int createNewLine(WritableSheet wsheet , int i , SpeFlightType speFlightType , String type) throws RowsExceededException, WriteException{
   int j = 0 ;
   wsheet.addCell(new Label(j++, i, speFlightType.getFlightStart())); 
   wsheet.addCell(new Label(j++, i, speFlightType.getFlightEnd()));
   wsheet.addCell(new Label(j++, i, speFlightType.getFlightNo()));
   wsheet.addCell(new Label(j++, i, speFlightType.getSegment()));
   wsheet.addCell(new Label(j++, i, "1".equals(speFlightType.getIsAuto()) ? "是":"否"));
   wsheet.addCell(new Label(j++, i, "1".equals(speFlightType.getIsEffect()) ? "生效":"作废"));
   wsheet.addCell(new Label(j++, i, speFlightType.getClsSqe()));  
   wsheet.addCell(new Label(j++, i, "1".equals(type) ? "竞比阀值": "2".equals(type) ? "进度阀值" : "没有子阀值"));
   wsheet.addCell(new Label(j++, i, "1".equals(speFlightType.getAutocap()) ? speFlightType.getCapnum():"0"));
   wsheet.addCell(new Label(j++, i, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(speFlightType.getCreateDate()))) ;
      return j ;
 }
 

 

 

 

 

 

 

分享到:
评论

相关推荐

    java利用jxl生成excel文件

    Java使用JXL库生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或导出时。JXL是一个开源的Java库,允许我们读取、写入和修改Excel文件。以下将详细讲解如何使用JXL库来生成Excel文件。 首先,我们需要在...

    jxl模版生成excel

    "jxl模版生成excel" 指的是使用JExcelAPI(简称jxl)这个Java库来创建基于模板的Excel文件。JExcelAPI是一个开源项目,允许程序开发者读写Microsoft Excel文件,它支持从Java数据结构直接导出到Excel格式,同时也可...

    jxl生成excel的通用方法

    使用jxl生成excel的通用方法,参数List&lt;?&gt;数据,LinkedHashMap,String&gt;实体类属性名和中文列名的键值对

    java操作jxl生成excel的简化jar包

    自己封装的方法,调用 XlHelper.getXl(List&lt;?&gt; voList , Object head , OutputStream ops)方法,直接返回需要的excel,而不需要再去写jxl的方法。第一个参数voList 是excel里的内容,第二个参数head是excel表头。第...

    jxl方式生成excel表格.zip

    本资源提供了一个利用jxl库实现Java程序中生成Excel表格的解决方案。jxl是一个广泛使用的开源Java库,它允许开发者读取、写入和修改Microsoft Excel文件。 首先,我们来详细了解一下jxl库。jxl库支持多种Excel操作...

    poi jxl 生成EXCEL 报表

    在Java编程环境中,生成Excel报表是一项常见的任务,尤其在数据处理和数据分析中。Apache POI 和 JExcelAPI(JXL)是两个广泛使用的库,分别用于处理Microsoft Office的POI格式(包括Excel)和Java环境中的Excel文件...

    用jxl生成EXCEL表格

    用jxl生成EXCEL表格,一个非常简单易懂的写法。

    jxl 生成excel 简易教程

    jxl是对excel强有力的操纵工具,它具有丰富的API可以满足对excel的各种开发需要。

    利用Jxl生成excel文件

    这篇博客“利用Jxl生成excel文件”提供了关于如何使用Jxl库创建Excel文档的指导。 首先,Jxl库允许开发者在Java程序中直接操作Excel格式的数据,而无需依赖Microsoft Office套件。它支持多种Excel功能,如单元格...

    使用JXL生成Excel实例详解

    这篇博客“使用JXL生成Excel实例详解”将深入探讨如何利用JXL库来创建Excel文件。 首先,要开始使用JXL,你需要在项目中添加JXL的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    jxl 自动生成excel

    例子如下: Object是一个对象实体类,如Studnet.java. List 是一个对象集合,后面的是输出路径. WriteExcel rw=new WriteExcel(); rw.writeExcel(new Object(), List, "f:/a.xls","库存表");

    [转]java struts2+jxl生成并导出Excel

    总的来说,结合Struts2和JXL,开发者可以方便地在Java web应用中实现Excel文件的生成与导出功能,提供给用户高效的数据导出体验。通过深入理解和实践,可以进一步定制化Excel的样式和内容,满足各种业务需求。

    java使用jxl打印excel报表文件

    在Java开发中,生成和处理Excel文件是一...总的来说,通过JXL库,Java开发者可以方便地生成和打印Excel报表,满足各种数据展示和导出的需求。尽管JXL有一些限制,但其简单易用的API使得它成为小型项目的一个不错选择。

    JXL生成excel报表

    在IT行业中,生成Excel报表是常见的数据展示和分析任务,而JXL库为Java开发者提供了一个强大且便捷的解决方案。JXL,全称Java Excel API,是一个开源的Java库,专为读取、写入以及修改Excel文件设计。它允许程序员在...

    jxl导出excel 完整例子工程

    jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程 jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程

    jxl导出excel加水印.zip

    `jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `...

    java通过jxl生成excel文档

    Java通过JXL库生成Excel文档是一项常见的任务,尤其在数据导出、报表生成等领域非常实用。JXL是一个Java API,允许我们读写Microsoft Excel文件,而无需依赖Microsoft Office。在这个过程中,我们可以创建新的工作簿...

    jxl对excel添加水印(含有setWaterMarkImage方法).zip

    在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成等领域。`jxl`库是一个广泛使用的开源库,它允许开发者用Java读取、写入和修改Excel文件。在这个特定的场景中,我们将探讨如何...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    在IT行业中,处理和操作Excel数据是一项常见的任务,特别是在数据导入导出、分析和报告生成等领域。JXL是一个Java库,专门用于读取、写入和修改Excel文件,它为Java开发者提供了一种方便的方式来处理Excel数据,而...

    jxl创建下拉列表

    ### jxl创建下拉列表知识点解析 #### 一、jxl概述 jxl 是一个用于读写Microsoft Excel 文件的Java库。它支持多种版本的Excel文件...此外,还可以根据实际需求添加更多的样式和特性,使得生成的Excel文件更加符合预期。

Global site tag (gtag.js) - Google Analytics