赞
踩
SSH2 POI导出EXCEL表格
1.首先导入poi的jar包
Excel中的工作簿、工作表、行、单元格中的关系:
一个Excel文件对应于一个workbook(HSSFWorkbook),
一个workbook可以有多个sheet(HSSFSheet)组成,
一个sheet是由多个row(HSSFRow)组成
2.实体类、dao层、biz层及映射配置相信都弄好了,主要是在action层加入以下代码:
//导出excel文档 public void contrExcel() throws Exception { HSSFWorkbook workbook=new HSSFWorkbook();//文档对象 HSSFSheet exSheet =workbook.createSheet();//表单 // 1. 创建合并单元格对象 CellRangeAddress cellRangeAddress = new CellRangeAddress(0,0,0,1);//起始行号,结束行号,起始列号,结束列号 //1.2 头标题样式(该createCellStyle,调了后面的方法) HSSFCellStyle style1 = createCellStyle(workbook, (short)15); //字体 HSSFFont font = workbook.createFont(); font.setColor(HSSFColor.WHITE.index); //字体颜色 style1.setFont(font); //设置背景模式 SOLID_FOREGROUND 背景以设置前景颜色一样 style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //设置前景颜色 style1.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index); //设置背景颜色 style1.setFillBackgroundColor(HSSFColor.LIGHT_BLUE.index); style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 //1.3列标题样式 HSSFCellStyle style2 = createCellStyle(workbook, (short)12); exSheet.addMergedRegion(cellRangeAddress); exSheet.setDefaultColumnWidth(20); //设置背景模式 SOLID_FOREGROUND 背景以设置前景颜色一样 style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //设置前景颜色 style2.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); //设置背景颜色 style2.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index); style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 HSSFCellStyle style3 = createCellStyle(workbook, (short)11); style3.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 style3.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 // 3.创建行 //3.1、创建头标题行;并且设置头标题 HSSFRow createRow = exSheet.createRow(0);//第一行 //格子单元 HSSFCell cell_1 = createRow.createCell(0);//表头 cell_1.setCellStyle(style1); cell_1.setCellValue("客户构成分析"); HSSFRow row1 = exSheet.createRow(1);//第二行 HSSFCell cell_2 = row1.createCell(0);//第一列:客户名称 cell_2.setCellStyle(style2); cell_2.setCellValue("客户名称"); HSSFCell cell_3 = row1.createCell(1);//第二列:订单金额 cell_3.setCellStyle(style2); cell_3.setCellValue("订单金额"); //整理数据数据 PageBean pageBean = new PageBean(); List<Map<String, Object>> listContr = this.contrBiz.getList(cstCustomer, pageBean); List<CstCustomer> list = new ArrayList<CstCustomer>(); CstCustomer cs = null; for (Map<String, Object> map : listContr) { cs = new CstCustomer(); cs.setCustName(map.get("name").toString()); cs.setSumPrice(map.get("price").toString()); list.add(cs); } //获得数据 for(int i = 0; i < list.size();i++){ HSSFRow row = exSheet.createRow(i+2);//第三行后 HSSFCell cell1 = row.createCell(0); HSSFCell cell2 = row.createCell(1); cell1.setCellValue(list.get(i).getCustName());//设值:客户名称 cell2.setCellValue(list.get(i).getSumPrice());//设值:订单金额 cell1.setCellStyle(style3); cell2.setCellStyle(style3); } //注意:【整理数据数据,获得数据】属于你获得数据的方法,你想展示几列加几条列表加就好了。 HttpServletResponse response = ServletActionContext.getResponse(); //把响应头数据类型设置为任意二进制流,用于上传下载 response.setContentType("application/octet-stream"); //告诉浏览器通过下载方式打开,并设置下载文件名 response.setHeader("Content-Disposition", "attachment;fileName="+ new String("客户贡献分析.xls".getBytes(),"ISO8859-1")); ServletOutputStream sos = response.getOutputStream(); workbook.write(sos); if(sos != null){ sos.close(); } }
//样式 private static HSSFCellStyle createCellStyle(HSSFWorkbook workbook, short s) { // TODO Auto-generated method stub //单元格样式 HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 //边框 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框 style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框 style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框 style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框 //创建字体 HSSFFont font = workbook.createFont(); //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗字体 font.setFontName("宋体");//设置字体 font.setFontHeightInPoints(s); //加载字体 style.setFont(font); return style; }
3.jsp页面调用(导出的按钮只要能调用contrExcel方法就可以了)
结果为:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。