本文比较简单。。。希望想真正使用的同学。。去看别人整理的吧。。。我怕这次整理比较乱。。影响大家阅读

什么是POI

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

添加依赖

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>RELEASE</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>RELEASE</version>
</dependency>

代码实现

因为为了方便所以本代码。。。就是基本上没有修改的项目代码。。。所以又看不懂的话。。多担待 -_-!!!

public String exportExcel(List<Object> data, Class<?> clazz) {OutputStream outputStream = null;File[] roots = File.listRoots();String path = roots[0].getPath();try {Field[] fields = data.getClass().getDeclaredFields();//实例化HSSFWorkbookHSSFWorkbook workbook = new HSSFWorkbook();//创建一个Excel表单,参数为sheet的名字HSSFSheet sheet = workbook.createSheet("sheet");//设置表头setTitle(workbook, sheet, clazz);//设置单元格并赋值setData(sheet, data, clazz);} catch (Exception e) {logger.info("ExcelUtil.exportExcel : 导出解析失败!");e.printStackTrace();}}private void setTitle(HSSFWorkbook workbook, HSSFSheet sheet, Class<?> clazz) {ClassField classField = new ClassField();List<String> list = classField.map.get(clazz);logger.info("ExcelUtil.setTitle : 这是map信息:" + classField.map);logger.info("ExcelUtil.setTitle : 这是头信息:" + list);try {HSSFRow row = sheet.createRow(0);//设置列宽,setColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度for (int i = 0; i < list.size(); i++) {sheet.setColumnWidth(i, 15 * 256);}//设置为居中加粗,格式化时间格式HSSFCellStyle style = workbook.createCellStyle();HSSFFont font = workbook.createFont();font.setBold(true);style.setFont(font);style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));//创建表头名称HSSFCell cell;for (int j = 0; j < list.size(); j++) {cell = row.createCell(j);cell.setCellValue(list.get(j));cell.setCellStyle(style);}} catch (Exception e) {logger.info("ExcelUtil.setTitle : 导出时设置表头失败!");e.printStackTrace();}}private static void setData(HSSFSheet sheet, List<Object> data, Class<?> clazz) {try {int rowNum = 1;Field[] fields = clazz.getDeclaredFields();for (int i = 0; i < data.size(); i++) {HSSFRow row = sheet.createRow(rowNum);for (int j = 0; j < fields.length; j++) {// 对于每个属性,获取属性名String varName = fields[j].getName();try {// 获取原来的访问控制权限boolean accessFlag = fields[j].isAccessible();// 修改访问控制权限fields[j].setAccessible(true);// 获取在对象f中属性fields[i]对应的对象中的变量Object o;try {o = fields[j].get(data.get(i));row.createCell(j).setCellValue(String.valueOf(o));} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 恢复访问控制权限fields[i].setAccessible(accessFlag);} catch (IllegalArgumentException ex) {ex.printStackTrace();}}rowNum++;}logger.info("ExcelUtil.setTitle : 表格赋值成功!");} catch (Exception e) {logger.info("ExcelUtil.setTitle : 表格赋值失败!");e.printStackTrace();}}

上面的代码中ClassField.java代码

public class ClassField {public Map<Class<?>, List> map = new HashMap<>();public ClassField() {List<String> gradingLoglist = new ArrayList<>();gradingLoglist.add("ID");gradingLoglist.add("问卷ID");gradingLoglist.add("问卷时间");gradingLoglist.add("问卷简介");gradingLoglist.add("被评人ID");gradingLoglist.add("被评人姓名");gradingLoglist.add("分数");map.put(GradingLogPo.class, gradingLoglist);List<String> submitInfoList = new ArrayList<>();submitInfoList.add("ID");submitInfoList.add("评分人ID");submitInfoList.add("评分人姓名");submitInfoList.add("被评人ID");submitInfoList.add("被评人姓名");submitInfoList.add("问卷ID");submitInfoList.add("问卷简介");submitInfoList.add("评分规则ID");submitInfoList.add("分数");submitInfoList.add("备注");map.put(SubmitInformationPo.class, submitInfoList);}
}

Springboot集成POI相关推荐

  1. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  2. SpringBoot集成MyBatis-Plus代码生成器(Dao)

    1.说明 本文基于SpringBoot集成MyBatis-Plus代码生成器, 把原来生成Entity.Mapper.Mapper XML.Service.Controller等各个模块的代码, 修改 ...

  3. SpringBoot集成MyBatis-Plus代码生成器

    1.说明 本文详细介绍Spring Boot集成MyBatis-Plus代码生成器的方法. 基于一个创建好的Spring Boot工程, 执行MyBatis-Plus提供的AutoGenerator代 ...

  4. SpringBoot集成MyBatis-Plus自定义SQL

    1.说明 本文介绍Spring Boot集成MyBatis-Plus框架后, 基于已经创建好的Spring Boot工程, 添加自定义的SQL实现复杂查询等操作. 自定义SQL主要有两种方式, 一种是 ...

  5. SpringBoot集成MyBatis-Plus框架

    1.说明 本文介绍Spring Boot集成MyBatis-Plus框架, 重点介绍需要注意的地方, 是SpringBoot集成MyBatis-Plus框架详细方法 这篇文章的脱水版, 主要是三个步骤 ...

  6. SpringBoot集成Log4j2框架

    1.说明 本文详细介绍Spring Boot集成Log4j2框架的方法, 基于已经创建好的Spring Boot工程, 由于Spring Boot默认使用的是Logback框架, 需要先排除掉Logb ...

  7. SpringBoot集成MyBatis-Plus框架详细方法

    1.说明 本文详细介绍Spring Boot集成MyBatis-Plus框架的方法, 使用MySQL数据库进行测试, 包括完整的开发到测试步骤, 从一开始的Spring Boot工程创建, 到MySQ ...

  8. SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?

    前文我们介绍了通过Apache POI通过来导出word的例子:那如果是word模板方式,有没有开源库通过模板方式导出word呢?poi-tl是一个基于Apache POI的Word模板引擎,也是一个 ...

  9. Springboot整合Poi导出excel(简单版)

    一. 问题引入 博客专栏: Springboot整合Poi导出excel(简单版) Springboot整合Poi导出excel(注解版) 总所周知Springboot是一个功能强大的微服务框架,集成 ...

最新文章

  1. pycharm 代码无法自动补全(自动顺带)的解决方法
  2. 虚拟化:IT技术的第三次革命
  3. 使用seek()函数与read()快速实现读取文件中的一段数据
  4. python 读取mysql大量数据处理_python使用多线程快速把大量mysql数据导入elasticsearch...
  5. HDOJ2013_蟠桃记
  6. 阶乘末尾 0 的个数
  7. C#基础知识回顾-- 反射(1)
  8. Oracle:grouping和rollup
  9. linux 安装hdf5view 入坑指南
  10. Android源码下载(包括最新8.0版本)
  11. java执行maven命令
  12. linux的bridge,Linux Bridge 详解
  13. 类和对象12:容器方法
  14. 英语语法篇 - 时态
  15. java 电脑模拟器_电脑java模拟器
  16. 使用多线程时@Service工具类出现NullPoint错误解决
  17. 翻译考试用计算机作答,2019年CATTI考试改为机考,官方首次披露真题
  18. UiPath Robotic Enterprise Framework 学习笔记
  19. 利用visio 画思维导图
  20. mysql字段超长会报错吗_MySQL使用过程中的报错处理(持续更新)

热门文章

  1. 1、OPenGL ES - 简介、iOS中GLKit简单应用
  2. 'OracleInternal.MTS.DTCPSPEManager' 类型初始值设定项引发异常
  3. 免费天气预报插件jquery版本
  4. 2020年你不应该错过的CSS新特性
  5. 欢迎观看Toni_hou的#生活8
  6. stm32f103c8t6+esp8266在WiFi下通过手机控制外设
  7. python 外星人游戏怎么打开_Python外星人入侵游戏开发—创建游戏窗口
  8. spark submit参数及调试
  9. 无root卸载预装-adb的简单操作
  10. css中设置交叉轴内容为拉伸,CSS-弹性布局2-交叉轴