Excel导出 利用poi-3.8-20120326.jar包 和工具包sl-common.jar

来源:互联网 发布:linux系统各种下载 编辑:程序博客网 时间:2024/04/20 22:58

下载工具类包:http://download.csdn.net/detail/feihuale/6752585

先把代码贴出

1.函数方法

----------------------------------------------------------------------------------------------------------------------------------------------------------

 String[] array = new String[]{"乡镇名称","土地面积","耕地面积","总人口","家庭户数","房屋数"
,"人口(个)","家庭(户)","房屋(间)","农田(亩)","人口(个)","家庭(户)","房屋(间)"};

List<AdCdInfosPage> list = xzService.getInfosPage(); //业务层返回的数据


List<String[]> rows = new ArrayList<String[]>();
for(AdCdInfosPage data : list) {
String[] dataArray = new String[13];
dataArray[0] = data.getAdnm();
dataArray[1] = data.getLandArea();
dataArray[2] = data.getCultiArea();
dataArray[3] = data.getPopulation();
dataArray[4] = data.getHousehold();
dataArray[5] = data.getHouse();
dataArray[6] = data.getHulPopulation();
dataArray[7] = data.getHulHousehold();
dataArray[8] = data.getHulHouse();
dataArray[9] = data.getHulFarmland();
dataArray[10] = data.getHolPopulation();
dataArray[11] = data.getHousehold();
dataArray[12] = data.getHolSoiHouse();

rows.add(dataArray);
}
//简单表头
/*SimpleExcelParam sep = new SimpleExcelParam();
sep.setFileName("乡镇信息");
sep.setSheetName("乡镇信息");
sep.setTitle("乡镇信息");
sep.setHeaders(array);
sep.setAligns(new String[]{"left","left"});
sep.setRows(rows);
String fileName = sep.getFileName() + "." + FileDownload.SUFFIX_EXCEL;
OutputStream os = FileDownload.getOutputStream(response, FileDownload.CONTENT_TYPE_EXCEL, fileName);
HSSFWorkbook wb = PoiExcelHelper.createSimpleHSSFWorkbook(sep);
wb.write(os);*/

//有合并表头的,我这里有着要求
ComplexHeaderExcelParam chep = new ComplexHeaderExcelParam();
chep.setFileName("乡镇信息");
chep.setSheetName("乡镇信息");
chep.setTitle("乡镇信息");
chep.setAligns(new String[]{"center","center"});
chep.setRows(rows);
List<List<ComplexHeader>> headers = new ArrayList<List<ComplexHeader>>();
List<ComplexHeader> chs1 = new ArrayList<ComplexHeader>();
//text,rowspan,colspan
chs1.add(new ComplexHeader("",1,6));//合并第一行的前6列
chs1.add(new ComplexHeader("历史洪水线下",1,4));//合并第一行的接下来的4列
chs1.add(new ComplexHeader("可能受山体滑坡、泥石流影响 ",1,3));

                         //合并接下来的3列,最后可看效果图

List<ComplexHeader> chs2 = new ArrayList<ComplexHeader>();
//text,rowspan,colspan
for(int i=0;i<array.length;i++){
chs2.add(new ComplexHeader(array[i],1,1));
}
headers.add(chs1);//第一行
headers.add(chs2);//第二行
chep.setHeaders(headers);
String fileName = chep.getFileName() + "." + FileDownload.SUFFIX_EXCEL;
OutputStream os = FileDownload.getOutputStream(response, FileDownload.CONTENT_TYPE_EXCEL, fileName);
HSSFWorkbook wb = PoiExcelHelper.createComplexHeaderHSSFWorkbook(chep);
wb.write(os);

----------------------------------------------------------------------------------------------------------------------------------------------------------

2.讲一下几个类

(1)SimpleExcelParam.java 简单表头的类 sl.commons.report.excel.SimpleExcelParam

(2)ComplexHeaderExcelParam.java 复杂表头的类 sl.commons.report.excel.ComplexHeaderExcelParam

(3)FileDownload.java 文件流下载的工具类 sl.commons.action.FileDownload

用此类去获取Excel输出流 ,有3个参数 

HttpServletResponse response ,

final String  CONTENT_TYPE_EXCEL = "application/vnd.ms-excel",

String fileName

OutputStream os = FileDownload.getOutputStream(response, FileDownload.CONTENT_TYPE_EXCEL, fileName);

(4)PoiExcelHelper.java  导出Excel工具类 sl.commons.report.poi.PoiExcelHelper

此类封装了poi获取HSSFWorkbook,有2个方法

a.生成简单表头

public static HSSFWorkbook createSimpleHSSFWorkbook(SimpleExcelParam sep)

b.生成含有合并表头

 public static HSSFWorkbook createComplexHeaderHSSFWorkbook(ComplexHeaderExcelParam chep)


3.显示页面效果






1 0
原创粉丝点击