需求:
完成一个简单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文件是一项常见的任务,特别是在数据处理、报表生成或导出时。JXL是一个开源的Java库,允许我们读取、写入和修改Excel文件。以下将详细讲解如何使用JXL库来生成Excel文件。 首先,我们需要在...
"jxl模版生成excel" 指的是使用JExcelAPI(简称jxl)这个Java库来创建基于模板的Excel文件。JExcelAPI是一个开源项目,允许程序开发者读写Microsoft Excel文件,它支持从Java数据结构直接导出到Excel格式,同时也可...
使用jxl生成excel的通用方法,参数List<?>数据,LinkedHashMap,String>实体类属性名和中文列名的键值对
自己封装的方法,调用 XlHelper.getXl(List<?> voList , Object head , OutputStream ops)方法,直接返回需要的excel,而不需要再去写jxl的方法。第一个参数voList 是excel里的内容,第二个参数head是excel表头。第...
本资源提供了一个利用jxl库实现Java程序中生成Excel表格的解决方案。jxl是一个广泛使用的开源Java库,它允许开发者读取、写入和修改Microsoft Excel文件。 首先,我们来详细了解一下jxl库。jxl库支持多种Excel操作...
在Java编程环境中,生成Excel报表是一项常见的任务,尤其在数据处理和数据分析中。Apache POI 和 JExcelAPI(JXL)是两个广泛使用的库,分别用于处理Microsoft Office的POI格式(包括Excel)和Java环境中的Excel文件...
用jxl生成EXCEL表格,一个非常简单易懂的写法。
jxl是对excel强有力的操纵工具,它具有丰富的API可以满足对excel的各种开发需要。
这篇博客“利用Jxl生成excel文件”提供了关于如何使用Jxl库创建Excel文档的指导。 首先,Jxl库允许开发者在Java程序中直接操作Excel格式的数据,而无需依赖Microsoft Office套件。它支持多种Excel功能,如单元格...
这篇博客“使用JXL生成Excel实例详解”将深入探讨如何利用JXL库来创建Excel文件。 首先,要开始使用JXL,你需要在项目中添加JXL的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
例子如下: Object是一个对象实体类,如Studnet.java. List 是一个对象集合,后面的是输出路径. WriteExcel rw=new WriteExcel(); rw.writeExcel(new Object(), List, "f:/a.xls","库存表");
总的来说,结合Struts2和JXL,开发者可以方便地在Java web应用中实现Excel文件的生成与导出功能,提供给用户高效的数据导出体验。通过深入理解和实践,可以进一步定制化Excel的样式和内容,满足各种业务需求。
在Java开发中,生成和处理Excel文件是一...总的来说,通过JXL库,Java开发者可以方便地生成和打印Excel报表,满足各种数据展示和导出的需求。尽管JXL有一些限制,但其简单易用的API使得它成为小型项目的一个不错选择。
在IT行业中,生成Excel报表是常见的数据展示和分析任务,而JXL库为Java开发者提供了一个强大且便捷的解决方案。JXL,全称Java Excel API,是一个开源的Java库,专为读取、写入以及修改Excel文件设计。它允许程序员在...
jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程 jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程
`jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `...
Java通过JXL库生成Excel文档是一项常见的任务,尤其在数据导出、报表生成等领域非常实用。JXL是一个Java API,允许我们读写Microsoft Excel文件,而无需依赖Microsoft Office。在这个过程中,我们可以创建新的工作簿...
在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成等领域。`jxl`库是一个广泛使用的开源库,它允许开发者用Java读取、写入和修改Excel文件。在这个特定的场景中,我们将探讨如何...
在IT行业中,处理和操作Excel数据是一项常见的任务,特别是在数据导入导出、分析和报告生成等领域。JXL是一个Java库,专门用于读取、写入和修改Excel文件,它为Java开发者提供了一种方便的方式来处理Excel数据,而...
### jxl创建下拉列表知识点解析 #### 一、jxl概述 jxl 是一个用于读写Microsoft Excel 文件的Java库。它支持多种版本的Excel文件...此外,还可以根据实际需求添加更多的样式和特性,使得生成的Excel文件更加符合预期。