pom中加入以下依赖:

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

先直接贴代码 :工具类


package com.health.partner.soms.utils;import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.poi.hssf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import javax.servlet.http.HttpServletResponse;import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;/*** @Description: TODO* @Author: huangW* @Date: 2019/10/28 9:55* @Version 1.0*/public class FilePortUtil {private static final Logger log = LoggerFactory.getLogger(FilePortUtil.class);/*** 导出功能* 注意:泛型T类字段名和containBean集合里字段名字的一致性** @param response* @param title       表名* @param headers     表头* @param list        数据集* @param containBean 数据集类型字段* @param <T>* @throws Exception*/public static <T> void exportExcel(HttpServletResponse response, String title, String[] headers, List<T> list, List<String> containBean) throws Exception {HSSFWorkbook workbook = null;try {workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet(title);HSSFRow row = sheet.createRow(0);/*创建第一行表头*/for (short i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell(i);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text);}Iterator<T> it = list.iterator();int index = 0;while (it.hasNext()) {index++;row = sheet.createRow(index);T t = (T) it.next();/*反射得到字段*/Field[] fields = t.getClass().getDeclaredFields();/*如果需要匹配*/if (CollectionUtils.isNotEmpty(containBean)) {for (int j = 0; j < containBean.size(); j++) {for (int i = 0; i < fields.length; i++) {Field field = fields[i];if (!field.getName().equals(containBean.get(j)))continue;/*给每一列set值*/setCellValue(t, field, row, j);}}} else {for (int i = 0; i < fields.length; i++) {Field field = fields[i];setCellValue(t, field, row, i);}}}// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");//重要点String fileName = new String(title.getBytes(), "iso8859-1") + ".xls";/*application/vnd.ms-excel告诉浏览器要下载的是个excel*/response.setContentType("application/vnd.ms-excel;charset=UTF-8");/*请求头设置,Content-Disposition为下载标识,attachment标识以附件方式下载*/response.addHeader("Content-Disposition", "attachment;filename=" + fileName);workbook.write(response.getOutputStream());} finally {if (workbook != null) {workbook.close();}}}/*** 设置每一行中的列** @param t* @param field* @param row* @param index* @param <T>*/private static <T> void setCellValue(T t, Field field, HSSFRow row, int index) {HSSFCell cell = row.createCell(index);Object value = invoke(t, field);String textValue = null;if (value != null) {if (value instanceof Date) {Date date = (Date) value;textValue = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss");} else {textValue = value.toString();}}if (textValue != null) {cell.setCellValue(textValue);}}/*** 反射映射数据集字段** @param t* @param field* @param <T>* @return*/private static <T> Object invoke(T t, Field field) {try {String fieldName = field.getName();PropertyDescriptor pd = new PropertyDescriptor(fieldName, t.getClass());Method method = pd.getReadMethod();return method.invoke(t);} catch (Exception e) {return null;}}}

controller层代码:@PostMapping("/RankingExport")@ApiOperation(value = "活动图表->推广java后台导出", notes = "推广java后台导出")public void Rankings(@ApiParam @RequestBody UserRecomRankingReqtDto userRecomRankingReqtDto, HttpServletResponse response) throws ParseException {log.info("UserReportResource.Rankings->{}", userRecomRankingReqtDto);String title = "recom2" ;String[] headers = { "推荐人约伴ID","推荐人", "推荐人手机号", "拉新人数","部门","推广人员排名"};List<UserRecomRankingRespDto> listObject = userReportBlogic.Rankings(userRecomRankingReqtDto);List<String> listColumn = Arrays.asList("userNumber", "name", "phoneNumber", "counts", "departmentName","ranking");try {FilePortUtil.exportExcel(response, title, headers, listObject, listColumn);} catch (Exception e) {e.printStackTrace();}}

List listObject = userReportBlogic.Rankings(userRecomRankingReqtDto);是根据条件查询的数据,调用FilePortUtil.exportExcel(response, title, headers, listObject, listColumn);就可以了。简单粗暴!

导出Excel功能代码相关推荐

  1. ruoyi框架默认的导出Excel功能代码简析

    ruoyi框架默认导出Excel功能 项目使用的是RuoYi Bootstrap多模块版本4.7.2,启动项目后会有默认的导出功能.包括使用ruoyi自带代码生成器,都会有导出功能的附带.接下就讲解一 ...

  2. 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...

    我们辛苦录入的数据都希望能有重复利用的价值,一方面这些基础数据需要有数据库级的重复利用,程序级别的重复利用,另一方面还需要直接可以方便的导出倒入的功能比较好,虽然我们自己制作的统计分析功能很强大,但是 ...

  3. django excel 导出页面_Django Admin中增加导出Excel功能过程解析

    在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 增加导出Excel功能 在Django Admin中每个模型的Admin类(继承至admin.ModelAdmin ...

  4. Java集成Hutool实现导出Excel功能

    原文来自:https://www.j1angrui.cn/article/2019081623 在工作中刚完成项目集成Hutool实现导出Excel功能,现在记录一下实现过程,方便以后作为例子参考. ...

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

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

  6. vue+iView实现导入与导出excel功能

    vue+iView实现导入与导出excel功能 一,需求: 1,导入导出的必要性 导入与导出在日常项目开发中经常用到, 批量导入功能可以快速插入添加数据. 导出功能则可方便直观明了拿到所需展示的重要数 ...

  7. vue项目导出EXCEL功能

    因为一些原因导出EXCEL功能必须前端来做,所以就研究了一下,在网上也找了一些文章来看,有一些不完整,我做完了就记录下来,供大家参考: 1.首先先安装依赖: npm install file-save ...

  8. java使用jxls导出excel功能

    在java的开发里,导出excel功能会经常遇到的,而jxls框架提供了很大的方便. jxls官网:http://jxls.sourceforge.net/,官网的下载包里面也提供详细的文档说明. 下 ...

  9. struts2 poi导出excel实例代码下载

    原文:struts2 poi导出excel实例代码下载 代码下载地址:http://www.zuidaima.com/share/1550463233526784.htm 页面展现成表格形式,添加ex ...

最新文章

  1. Anaconda | CentOS7 -解决 Python2和Python3共存
  2. mysql常见死锁_MySQL死锁系列-常见加锁场景分析
  3. Exchange 2013恢复已禁用用户邮箱
  4. 如何用redis实现分布式锁?这篇文章教你用redisson实现分布式锁,封装之后的方法更好用!
  5. 对象集合中如何用对象的某个属性给对象排序?
  6. c程序怎么改为java程序_如何将Java程序的入口点更改为C签名?
  7. Flask 框架下 Jinja2 模板引擎高层 API 类——Environment
  8. ctreectrl 设置选中_CTreeCtrl点击获得选中项
  9. 一些看起来有用但没用过的函数
  10. 标准C程序设计七---121
  11. 渲染怎么加hdri_[翻译]Corona渲染器官方教程2--设置HDRI光照
  12. 《APUE》读书笔记—第四章文件和目录
  13. Sentaurus TCAD 2013 在RedHat7.0 Linux系统的安装教程
  14. 如何计算机网络打印机,电脑如何连接网络打印机?网络打印机的连接教程
  15. ERROR】Unable to open underlying table which is differently defined or of non-MyISAM type or ...
  16. 谷歌浏览器刷新快捷键
  17. Java实验—四子棋进阶
  18. 【美港探案】百度Q2:需要重新定义
  19. 计网-网络号、子网号、主机号以及子网网络地址,子网广播地址的算法
  20. 2023年全国最新二级建造师精选真题及答案1

热门文章

  1. 教育家 | 吴文俊:懂数学,更懂中国
  2. 关于如何理解Glibc堆管理器(Ⅹ——完结、补充、注释——Arena、heap_info、malloc_*)
  3. JavaSE 接口与内部类
  4. mysql lag over_数据库sql 使用 lag 和OVER 函数和 like 使用 小技巧
  5. Siammask源码demo运行配置
  6. JAVA数码宝贝_我的世界1.7.10数码宝贝
  7. Echarts实现区级地图
  8. Q.me推出! Amortech展示了它的卡尔加里软件开发技能
  9. 2021-2025年中国SWIR-InGaAs光电二极管线阵行业市场供需与战略研究报告
  10. thinksns java_php-java登录thinksns时的加密解密操作