SSH2 POI导出EXCEL表格

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();}}
//样式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方法就可以了)

结果为:

Java web项目利用POI导出EXCEL表格相关推荐

  1. java excel 边框_【web开发】☆★之利用POI操作Excel表格系列教程【9】单元格边框处理...

    [web开发]☆★之利用POI操作Excel表格系列教程[9]单元格边框处理 package csg.xiaoye.poidemo; import java.io.FileOutputStream; ...

  2. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值

    [web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...

  3. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

  4. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  5. Springboot利用poi导出excel下载

    Springboot利用poi导出excel下载 因为项目中之前的做法是用反射获取属性,所以demo中也是用的反射,我看网上很多文章都是存入一个List中,不知道这两种哪种更何合适一点,或者有什么更好 ...

  6. 复杂的POI导出Excel表格(多行表头、合并单元格)

    poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...

  7. POI导出Excel表格,去掉数字框的左上角绿色的小三角

    在用POI导出Excel表格,数字框的左上角有个绿色的小三角,看着很不舒服,如下图所示: 目的:当单元格为数字时,不要转为文本输出,就直接按数字格式输出,去掉左上角的绿色小三角形. 解决办法:在网上找 ...

  8. Spring Boot poi 导出Excel表格、Txt到浏览器下载

    Spring Boot & poi 导出Excel表格.Txt到浏览器下载 原文链接:小回博客 文章目录 Spring Boot & poi 导出Excel表格.Txt到浏览器下载 一 ...

  9. java poi导出Excel表格超大数据量解决方案

    Java实现导出excel表格功能,大部分都会使用apache poi,apache poi API 地址 POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果 ...

最新文章

  1. CVD和ALD薄膜沉积技术应用领域
  2. 【jFreeChart】开发流程
  3. IPC之哲学家进餐问题
  4. 安装VMware并新建虚拟机
  5. 机器学习中向量化编程总结记录
  6. python数组索引和切片_python numpy数组的索引和切片的操作方法
  7. MySQL复习值代码知识点(2)
  8. 5月25日-js操作DOM遍历子节点
  9. L2-013. 红色警报-PAT团体程序设计天梯赛GPLT(图的连通分量个数统计)
  10. Java类与类,类与接口,接口与接口关系
  11. Java基础编程题:倒序输出九九乘法表
  12. TP LINK交换机 console 超级终端链接设置
  13. 新西兰计算机科学硕士哪所大学最好,2020年新西兰哪些大学计算机科学专业比较好及其优势介绍...
  14. Python中pass是什么?
  15. 一个包含30行代码的Python项目:如何在您最喜欢的Twitcher流式传输时设置SMS通知...
  16. 普歌-飞灵团队-nuxt中jQuery报e.indexOf is not a function错误
  17. app打包上传遇到的问题
  18. 模式分解(2NF、3NF)
  19. Git版本回退并提交远程
  20. Linux工具的基本使用

热门文章

  1. 显著性检测—谱残差方法分析与实现
  2. 你的无人机为什么不会乱飘?
  3. 2022.12.1 英语背诵
  4. 数据仓库之缓慢变化维度处理
  5. 计算机二级WPS Office选择题真题第一套,计算机二级wps office考试题库,计算机二级wps office题库
  6. x-ray图像增强算法
  7. 机器学习笔记—13(李宏毅版)神经网络压缩与元学习
  8. 最大公约数 (20 分) 第三个测试点
  9. PointPillars:基于点云的快速目标检测网络
  10. 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。