当前位置:   article > 正文

Java web项目利用POI导出EXCEL表格_java web 利用poi导出excel

java web 利用poi导出excel
	SSH2 POI导出EXCEL表格
  • 1

1.首先导入poi的jar包
在这里插入图片描述

  • HSSFWorkbook :工作簿,代表一个excel的整个文档
  • HSSFSheet:工作表
  • HSSFRow :行
  • HSSFCell:单元格
  • HSSFCellStyle :单元格样式
  • HSSFFont:字体

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();
        }
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86

	//样式
	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;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3.jsp页面调用(导出的按钮只要能调用contrExcel方法就可以了)
在这里插入图片描述
结果为:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/272926?site
推荐阅读
相关标签
  

闽ICP备14008679号