1.导入pom文件

    <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency></dependencies>

2.引入转换工具类ExportExcelUtil

package com.hzh;、
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.ss.util.CellRangeAddress;/*** @ClassName ExportExcelUtil* @description: 导出List<Object>数据到excel(最多可导出65535行)**/public class ExportExcelUtil {/**** 构造方法*/private ExportExcelUtil() {}/**** 工作簿*/private static HSSFWorkbook workbook;/**** sheet*/private static HSSFSheet sheet;/**** 标题行开始位置*/private static final int TITLE_START_POSITION = 0;/**** 时间行开始位置*/private static final int DATEHEAD_START_POSITION = 1;/**** 表头行开始位置*/private static final int HEAD_START_POSITION = 2;/**** 文本行开始位置*/private static final int CONTENT_START_POSITION = 3;/*** @description* @param dataList*        对象集合* @param titleMap*        表头信息(对象属性名称->要显示的标题值)[按顺序添加]* @param nameMap*        sheet名称、导出的文件地址和文件名* @return**/public static void excelExportWithName(List<?> dataList, Map<String, String> titleMap, Map<String, String> nameMap) {// 初始化workbookinitHSSFWorkbook(nameMap.get("sheetName"));// 标题行createTitleRow(titleMap, nameMap.get("sheetName"));// 时间行createDateHeadRow(titleMap);// 表头行createHeadRow(titleMap);// 文本行createContentRow(dataList, titleMap);//设置自动伸缩//autoSizeColumn(titleMap.size());// 写入处理结果try {//生成UUID文件名称UUID uuid = UUID.randomUUID();String pathName = nameMap.get("filePath") + nameMap.get("excelName") + ".xls";//如果web项目,1、设置下载框的弹出(设置response相关参数);2、通过httpservletresponse.getOutputStream()获取OutputStream out = new FileOutputStream(pathName);System.out.println(pathName);workbook.write(out);out.close();}catch (Exception e) {e.printStackTrace();}}/***** @param sheetName*        sheetName*/private static void initHSSFWorkbook(String sheetName) {workbook = new HSSFWorkbook();sheet = workbook.createSheet(sheetName);}/*** 生成标题(第零行创建)* @param titleMap 对象属性名称->表头显示名称* @param sheetName sheet名称*/private static void createTitleRow(Map<String, String> titleMap, String sheetName) {CellRangeAddress titleRange = new CellRangeAddress(0, 0, 0, titleMap.size() - 1);sheet.addMergedRegion(titleRange);HSSFRow titleRow = sheet.createRow(TITLE_START_POSITION);HSSFCell titleCell = titleRow.createCell(0);titleCell.setCellValue(sheetName);}/*** 创建时间行(第一行创建)* @param titleMap 对象属性名称->表头显示名称*/private static void createDateHeadRow(Map<String, String> titleMap) {CellRangeAddress dateRange = new CellRangeAddress(1, 1, 0, titleMap.size() - 1);sheet.addMergedRegion(dateRange);HSSFRow dateRow = sheet.createRow(DATEHEAD_START_POSITION);HSSFCell dateCell = dateRow.createCell(0);dateCell.setCellValue(new SimpleDateFormat("yyyy年MM月dd日").format(new Date()));}/*** 创建表头行(第二行创建)* @param titleMap 对象属性名称->表头显示名称*/private static void createHeadRow(Map<String, String> titleMap) {// 第1行创建HSSFRow headRow = sheet.createRow(HEAD_START_POSITION);int i = 0;for (String entry : titleMap.keySet()) {HSSFCell headCell = headRow.createCell(i);headCell.setCellValue(titleMap.get(entry));i++;}}/**** @param dataList 对象数据集合* @param titleMap 表头信息*/private static void createContentRow(List<?> dataList, Map<String, String> titleMap) {try {int i=0;for (Object obj : dataList) {HSSFRow textRow = sheet.createRow(CONTENT_START_POSITION + i);int j = 0;for (String entry : titleMap.keySet()) {String method = "get" + entry.substring(0, 1).toUpperCase() + entry.substring(1);Method m = obj.getClass().getMethod(method, null);String value =   m.invoke(obj, null).toString();HSSFCell textcell = textRow.createCell(j);textcell.setCellValue(value);j++;}i++;}}catch (Exception e) {e.printStackTrace();}}/*** 自动伸缩列(如非必要,请勿打开此方法,耗内存)* @param size 列数*/private static void autoSizeColumn(Integer size) {for (int j = 0; j < size; j++) {sheet.autoSizeColumn(j);}}
}

3.创建对象实体类Employee

package com.hzh;public class Employee {private Integer name;private String clazz;private Integer year;private Integer month;private Integer day;private double salary;public Employee(Integer name, String clazz, Integer year, Integer month, Integer day, double salary) {this.name = name;this.clazz = clazz;this.year = year;this.month = month;this.day = day;this.salary = salary;}public Integer getName() {return name;}public void setName(Integer name) {this.name = name;}public String getClazz() {return clazz;}public void setClazz(String clazz) {this.clazz = clazz;}public Integer getYear() {return year;}public void setYear(Integer year) {this.year = year;}public Integer getMonth() {return month;}public void setMonth(Integer month) {this.month = month;}public Integer getDay() {return day;}public void setDay(Integer day) {this.day = day;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}
}

4.启动主类CustomerExportTest

package com.hzh;import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;public class CustomerExportTest {public static void main(String[] args) {// 需要导出的数据List<Employee> staffs = new ArrayList<Employee>();for (int i = 0; i < 100; i++) {Employee staff = new Employee(i, i+"hh", 1900+i, 12, 25, 2500+i);staffs.add(staff);}// 表头信息Map<String,String> titleMap = new LinkedHashMap<String,String>();titleMap.put("name", "姓名");titleMap.put("clazz", "组号");titleMap.put("year", "年份");titleMap.put("month", "月份");titleMap.put("day", "天");titleMap.put("salary", "薪资");// 文件路径地址和文件名HashMap<String, String> nameMap = new HashMap<>();nameMap.put("sheetName", "信息导出"); //excel里的sheet名字nameMap.put("excelName", "excel名字"); //导出的文件名字nameMap.put("filePath", "D:\\"); //导出的文件路径System.out.println("start导出");long start = System.currentTimeMillis();ExportExcelUtil.excelExportWithName(staffs, titleMap, nameMap);long end = System.currentTimeMillis();System.out.println("end导出");System.out.println("耗时:"+(end-start)+"ms");}
}

测试结果

使用poi把Java对象转换成excel相关推荐

  1. Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象

    文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...

  2. Java对象转换成Map

    需求总是千奇百怪,对象转成map,看似没必要,但就是有这个需求,所以记录下来 首先是Bean package tools;import lombok.Data;/*** 车辆实体类*/ @Data p ...

  3. 【Java】Java对象转换成Map

    1.概述 转载:https://www.cnblogs.com/tobeymarshall/p/10217410.html 需求总是千奇百怪,对象转成map,看似没必要,但就是有这个需求,所以记录下来 ...

  4. Jackson使用示例:将Java对象转换成Map

  5. java 对象 转换 工具类_Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)...

    通用excel与对象相互转换的工具类 前言:最近开发需要一个Excel批量导入或者导出的功能,之前用过poi-ooxml开发过一个导入的工具类,正好蹭着这次机会,把工具类的功能进行完善. 使用说明: ...

  6. 使用Jackson将一个对象转换成一个JSON字符串

    由于ajax的流行,在程序中使用了越来越多的json来进行数据的传输,而Jackson可以将一个普通的java对象转换成一个json的字符串,帮助程序员进行前后端数据的传输. 首先需要导入程序依赖的j ...

  7. json字符串转成 json对象 json对象转换成java对象

    import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...

  8. java pojo 转 map_如何将POJO对象转换成MAP

    展开全部 很多情况需要将取得的POJO对象转换成其他表现形式,如Key-Value的Map形式,用于数据展现.本文介绍如何e5a48de588b662616964757a686964616f31333 ...

  9. 一种使用Java的快速将Web中表格转换成Excel的方法

    背景 随着后疫情时代的到来,在过去的2022年,全国的经济情况,想必是很多学者和研究对象都非常关心的事.而这些数据在国家统计局网站上都有相应的记录.通过分析这些数据,可以从某一个角度来验证和观察当下的 ...

  10. python 数字转化excel行列_Python 3 实现数字转换成Excel列名(10进制到26进制的转换函数)...

    背景: 最近在看一些Python爬虫的相关知识,讲爬取的一些数据写入到Excel表中,当时当列的数目不确定的情况下,如何通过遍历的方式讲爬取的数据写入到Excel中. 开发环境: Python 3  ...

最新文章

  1. 浅谈通信编程(二)--如何分离通信物理接口和应用程序
  2. 利用Python实现推流直播详解
  3. 1过程流程图 3 apqp_如何绘制流程图?这里有3种绘制方法,既简单又高效!1分钟可学会...
  4. Windows 10——安装Snort_2_9_16
  5. 边缘计算在天猫精灵云应用上的落地实践
  6. ocr python opencv_如何使用(opencv/python)来实现OCR处
  7. 漫画:老板扣了我1000,因为我没记住阿里巴巴开发手册的这条规则。
  8. ModalPopupExtender控件主要有两种使用方式:客户端使用方式和服务器端使用方式
  9. 卢伟冰再怼荣耀9X 10W快充与五年前红米Note一代机型一致
  10. 拓端tecdat|tableau的骑行路线地理数据可视化
  11. 机器学习之特征选择 (feature_selection)
  12. 量子通信技术、量子加密技术
  13. 迁移到MySQL的语法转换工具初步设计
  14. Snaker-Designer在Eclipse中的安装和使用
  15. 阿里云查找或修改对应实例的远程连接密码
  16. 有哪些比较流行的 C、C++和Java 的入门级项目?
  17. 将SSH多次登录失败的IP加入黑名单
  18. 【C++】从extern关键字开始谈C语言多文件编程
  19. 自动化测试 appium 会报错 Could not proxy command to remote server. Original error: Error: socket hang up
  20. 电视显示990002服务器访问失败,990001互联网访问失败(1)是啥原因

热门文章

  1. m基于BP神经网络的障碍物避障和路线规划matlab仿真
  2. PEANUT-WF模块开发-HslCommunicationEx
  3. 如何提升码代码能力方法论漫谈
  4. 【Tensorrt】Tensorrt C++部署YOLO v5报错记录 Version tag does not match. Note: Current Version: xxx, Serializ
  5. 又一个奇葩要求,Python是如何将“中文”转“拼音”的?
  6. Python的GUI图形界面工具大全
  7. 知乎高赞 | 有没有适合XSh练习 Python 的做题类网站?
  8. 手把手带你撸一个校园APP(一):项目简介
  9. Thinkpad E420移除白名单
  10. java读取地址栏参数(id=123name=xiaoxiao)