调用方法

//表头
String[] headers = {  "项目ID","贷款名称","借款人ID","用户名","借款人名称/企业名称","信用等级","客服id","客服名称","年利率","借款期限","借款期限类型","申请日期","成标日期","借款状态","最后修改时间","创建日期"};
//数据键名或者MODEL类字段名
String[] Col = {"tasklogId","loanName","custId","userName","realName","creditGrade","serviceId","serviceName","profitInterest","loanDeadline","loanDeadlineType","createTime","finishTime","status","updateTime","createTime"};ExportExcel<P2pLoanTasklog> ex = new ExportExcel<P2pLoanTasklog>();
//这是model类型的数据  写的例子  暂时不添加数据
List<P2pLoanTasklog> excelList  = new ArrayList<P2pLoanTasklog>();
//生成Excel
HSSFWorkbook workbook = ex.exportExcel("sheet1", headers,Col, excelList,null);
//下载
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=" + exportExcelFileName);
OutputStream ouputStream = response.getOutputStream();
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close();  

ExportExcel 导出EXCEL类

package com.hjzx.common.util;import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class ExportExcel<T> {private static final Logger logger = LoggerFactory.getLogger(ExportExcel.class);/** *  * @param title *            表格标题名 * @param headers *            表格属性列名数组 (第一行标题)* @param Col *            需要显示的表格属性列名数组 如果是javabean 必须和字段名字一直 如果为Map 必须为Map的key名字对应* @param dataset *            需要显示的数据集合,集合泛型支持两种,1:符合javabean风格的类的对象 2:Map类型。此方法支持的 *            javabean属性的数据类型有基本数据类型及String,Date,byte[](图片数据) * @param pattern *            如果有时间数据,设定输出格式。默认为"yyy-MM-dd" */  public HSSFWorkbook exportExcel(String title, String[] headers,String[] Col,Collection<T> dataset, String pattern) {if(pattern == null || pattern.equals("")) pattern = "yyy-MM-dd";// 声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个表格HSSFSheet sheet = workbook.createSheet(title);// 设置表格默认列宽度为15个字节sheet.setDefaultColumnWidth(15);// 生成一个样式HSSFCellStyle style = workbook.createCellStyle();// 设置这些样式style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 生成一个字体HSSFFont font = workbook.createFont();font.setColor(HSSFColor.VIOLET.index);font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 把字体应用到当前的样式style.setFont(font);// 生成并设置另一个样式HSSFCellStyle style2 = workbook.createCellStyle();style2.setFillForegroundColor(HSSFColor.WHITE.index);style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);style2.setBorderRight(HSSFCellStyle.BORDER_THIN);style2.setBorderTop(HSSFCellStyle.BORDER_THIN);style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 生成另一个字体HSSFFont font2 = workbook.createFont();font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);// 把字体应用到当前的样式style2.setFont(font2);// 声明一个画图的顶级管理器HSSFPatriarch patriarch = sheet.createDrawingPatriarch();// 产生表格标题行HSSFRow row = sheet.createRow(0);int Cell = 0;for (short i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell(Cell);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text);Cell ++ ;}// 遍历集合数据,产生数据行Iterator<T> it = dataset.iterator();int index = 0;while (it.hasNext()) {index++;row = sheet.createRow(index);T t = (T) it.next();String[] fields = Col;Cell = 0;for (short i = 0; i < fields.length; i++) {String fieldName = fields[i];HSSFCell cell = row.createCell(Cell);cell.setCellStyle(style2);try {Object value = "";Class tCls = null;Map map = null;if(t instanceof Map){map = (Map)t;value = map.get(fieldName);} else {String getMethodName = "get"+ fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName,new Class[] {});value = getMethod.invoke(t, new Object[] {});}if(value == null ) value = "";// 判断值的类型后进行强制类型转换String textValue = null;if (value instanceof Date) {Date date = (Date) value;SimpleDateFormat sdf = new SimpleDateFormat(pattern);textValue = sdf.format(date);} else if (value instanceof byte[]) {// 有图片时,设置行高为60px;row.setHeightInPoints(60);// 设置图片所在列宽度为80px,注意这里单位的一个换算sheet.setColumnWidth(Cell, (short) (35.7 * 80));// sheet.autoSizeColumn(i);byte[] bsValue = (byte[]) value;HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0,1023, 255, (short) 6, index, (short) 6, index);anchor.setAnchorType(2);patriarch.createPicture(anchor, workbook.addPicture(bsValue, HSSFWorkbook.PICTURE_TYPE_JPEG));} else {// 其它数据类型都当作字符串简单处理textValue = value.toString();}// 如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成if (textValue != null) {Pattern p = Pattern.compile("^//d+(//.//d+)?$");Matcher matcher = p.matcher(textValue);if (matcher.matches()) {// 是数字当作double处理cell.setCellValue(Double.parseDouble(textValue));} else {HSSFRichTextString richString = new HSSFRichTextString(textValue);HSSFFont font3 = workbook.createFont();font3.setColor(HSSFColor.BLUE.index);richString.applyFont(font3);cell.setCellValue(richString);}}Cell ++ ;} catch (Exception e) {e.printStackTrace();}}}return workbook;}
}

大神有好的建议可以交流一下

JAVA POI Excel导出,数据源可以是ListMap或者ListModel类型相关推荐

  1. java poi excel导出

    直接上代码 0. pom依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypo ...

  2. java poi excel导出2003版改成2007版本的时候报错

    03版本: HSSFWorkbook book =new HSSFWorkbook();---并无报错 07版本: XSSFWorkbook book =new XSSFWorkbook(); 报错内 ...

  3. Java POI Excel导入导出

    Java POI Excel导入导出 1.maven引入依赖 2.导入Excel 3.导出Excel 1.maven引入依赖 <!-- POI Excel 操作 --> <depen ...

  4. java实现excel导出合并单元格

    随着数据的不断增长,很多时候需要将数据导出到Excel中进行分析.处理和展示.而Java作为一种流行的编程语言,自然也提供了很多实现Excel导出的方法.本文将介绍如何使用Java实现Excel导出, ...

  5. java poi pdf 导出

    java poi pdf 导出 (java poi pdf导出 文字+图片两张放置一行) 思路:流传入图片 ,pdf没有行的概念,只有列即为一行,两张图片可以先建立一列在一列总再建立两列各放置一张图片 ...

  6. java中Excel导出echart图片

    java中Excel导出echart图片 1.在生成echart的前端代码生成图片代码后Echart.setOption(captestRcapEchartOption, true);后面加上以下代码 ...

  7. java poi word导出

    java poi word导出 (含有文字,图像) 导出word效果如下: 思路:建立预期导出word效果,设置为模板,然后填充对应信息,注意,加粗,居中等一些图片,文字格式预先设置好.然后进行文字或 ...

  8. Java POI Excel移动行和复制行的处理

    目录 Java POI Excel移动行和复制行的处理 坑点: 实现的代码 Java POI Excel移动行和复制行的处理 POI操作Excel时,不支持移动行的操作,因此在需要通过复制行+删除行+ ...

  9. java - poi递归导出树结构Excel,导入树结构Excel,树结构递归查询,新增,修改,删除

    工作中设计树结构增删改查,导入,导出操作,搜索 POI导入导出树结构Excle 相关博客较少,故写博客用以记录分享. 文章目录 一.表结构设计,导入导出模板. 二.递归查询树结构 1.思路如下 2.代 ...

  10. Java POI导入/导出(规则/非规则)excel

    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

最新文章

  1. 背包问题概述(Lintcode- 562.Backpack IV问题解决)
  2. Fiddler对手机抓包
  3. [Vue warn]: Invalid prop: custom validator check failed for prop xxx.问题
  4. 2018 疯狂微服务之死
  5. python控制gpio产生固定数量的脉冲_STM32L151用dma控制GPIO口发出指定的脉冲个数的疑惑!...
  6. Oracle数据库入门教程(作者原创)
  7. 最长回文子串 马拉车算法
  8. 数据库练习题归纳整理
  9. minimum在java中的意思_Java Calendar getMinimum()方法与示例
  10. docker-compose up -d --build不会更新镜像;什么时候容器会变更
  11. jt808终端鉴权_JT808-1: JT808协议、GB808协议、道路运输车辆卫星定位系统-北斗兼容车载终端通讯协议...
  12. 如何删除数据库中的冗余数据
  13. 微信公众号使用:微信公众平台企业类型的微信认证申请流程
  14. html 超链接标签 a 的基本用法
  15. 【Flume】Flume原理简述及示例实践
  16. 不等式解集怎么取_不等式的解集怎么求
  17. 机器学习中的数学——距离定义(二十):相对熵(Relative Entropy)/KL散度(Kullback-Leibler Divergence)
  18. 手写promise(详细版)
  19. Python生成随机试卷及答案
  20. RxJava进阶一(创建类操作符)

热门文章

  1. 【机器学习】十二、一文看懂支持向量机原理
  2. 阿尔法贝塔阀原理_阿尔法跟贝塔以及夏普讲的最通俗的
  3. Microsoft Designer 微软设计师 拆机(拆鼠标)路程
  4. selenium是如何启动浏览器的
  5. HDUOJ 6555 The Fool
  6. Snmp拓扑结构php,基于SNMP的网络拓扑结构生成
  7. 积分,积分兑换,英语怎么说?
  8. Will----个人资料
  9. MySQL创建表和约束条件(四)
  10. GoLang之defer、panic、recover