Spring Boot集成Easypoi导出Excel

news2025/8/3 19:58:23

 

目录

1.引入Maven依赖

2.实体类属性加上@Excel注解

3.导出示例

4.导出结果

 5.注解@Excel说明


1.引入Maven依赖

<!--easypoi依赖(表格导入导出)-->
<dependency>
	<groupId>cn.afterturn</groupId>
	<artifactId>easypoi-spring-boot-starter</artifactId>
	<version>4.3.0</version>
</dependency>

2.实体类属性加上@Excel注解

需要导出的属性才加上@Excel注解,不加注解的属性不会导出

package com.test.entity;

import java.util.Date;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

/**
 * 测试实体
 */
@Data
public class ExcelVO {

	/**
	 * 主键ID
	 */
	private String id;
    /**
     * 用户名
     */
	@Excel(name = "用户名", orderNum = "1", width = 10)
    private String name;
	/**
	 * 年龄
	 */
	@Excel(name = "年龄", orderNum = "2", type = 10, width = 10)
	private Integer age;
	/**
	 * 性别: 1.男 2.女
	 */
	@Excel(name = "性别", orderNum = "3", replace = {"男_1", "女_2"}, width = 10)
	private Integer sex;
	/**
     * 备注
     */
	@Excel(name = "备注", orderNum = "4", width = 20)
    private String remark;
	/**
	 * 创建时间
	 */
	@Excel(name = "创建时间", orderNum = "5", width = 20, exportFormat = "yyyy-MM-dd HH:mm:ss")
	private Date createTime;

}

3.导出示例

建议用浏览器测试,如果用postman导出execl文件名会为response.xls,是正常的

postman导出execl文件名为response.xls问题_涛哥是个大帅比的博客-CSDN博客

package com.test.controller;

import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.test.entity.ExcelVO;

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;

/**
 * excel导出测试
 */
@RestController
@RequestMapping("/excel")
public class ExcelController {

    @RequestMapping(value = "/export", method = RequestMethod.GET)
    public void export(HttpServletResponse response) {
    	/*
    	 * 测试数据
    	 */
    	List<ExcelVO> list = new ArrayList<ExcelVO>();
    	for (int i = 0; i < 10; i++) {
    		ExcelVO excelVO = new ExcelVO();
    		excelVO.setName("张三-"+i);
    		excelVO.setSex(i%2==0?1:2);
    		excelVO.setAge(i+10);
    		excelVO.setRemark("备注-"+i);
    		excelVO.setCreateTime(new Date());
    		list.add(excelVO);
		}
    	
    	try {
    		
			//导出
			String fileName = "用户列表";
			/*
			 * @param title	标题名称,表格第一行会多一行标题,不需要设置为null
			 * @param sheetName	sheet页的名称
			 */
			ExportParams exportParams = new ExportParams(null, fileName);
			/*
		     * @param entity    表格标题属性
		     * @param pojoClass Excel对象Class
		     * @param dataSet   Excel对象数据List
		     */
			Workbook workbook = ExcelExportUtil.exportExcel(exportParams, ExcelVO.class, list);
			
			//当前时间作为文件名
			Calendar calendar = Calendar.getInstance();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
			String nowDate = sdf.format(calendar.getTime());
			fileName += nowDate;
			
			// 设置输出的格式
			response.setCharacterEncoding("UTF-8");
			response.addHeader("content-type", "application/vnd.ms-excel");
			response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls");	// 设置下载后的文件名
			OutputStream os = response.getOutputStream();
			workbook.write(os);
			
			//关闭流
			os.flush();
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
    }
    
    
}

4.导出结果

 

 

 5.注解@Excel说明

名称说明
exportFormat导出的时间格式,示例:exportFormat = "yyyy-MM-dd HH:mm:ss"
isWrap是否换行 即支持\n,默认true
name列名
orderNum排序,升序方式
replace值替换  格式{a_id,b_id},示例:replace = {"男_1", "女_2"}
type导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本
width每个列的宽 单位为字符,一个汉字=2个字符,限制1-255
isColumnHidden是否需要隐藏该列 默认false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【愚公系列】2022年11月 数据库-数据库文档生成工具SmartSQL使用

文章目录前言一、数据库文档生成工具SmartSQL使用1.SmartSQL的功能介绍2.运行3.连接数据库4.分组管理5.数据表相关功能6.导入导出7.文档截图7.1 CHM文档7.2 MD文档ABTABAC_MAPPING 7.3 EXCEL文档7.4 PDF文档7.5 HTML文档7.6 XML文档7.7 JSON文档前言 SmartSQL 是一款方便、快捷…

Photographic Tone Reproduction for Digital Images

Abstract 经典的摄影任务是将现实世界亮度的潜在高动态范围映射到摄影印刷品的低动态范围。将数字图像映射到低动态范围的打印或屏幕的计算机图形从业者也面临着这种音调再现问题。本文介绍的工作利用了经过时间考验的摄影实践技术来开发新的色调再现算子。特别是&#xff0c;…

进程的调度

目录 1. 进程的概念 2.进程是如何被调度的 2.1描述 2.2 组织 2.3 PCB中描述的进程特征 2.4 进程调度的相关属性&#xff08;接2.3&#xff09; 3. 内存管理 1. 进程的概念 一个跑起来的程序就称之为进程(没跑起来就不是进程) 进程是操作系统分配资源的基本单位。 2.进程…

说说原型(prototype)、原型链

1、原型 prototype 和 proto 每个对象都有一个__proto__属性&#xff0c;并且指向它的prototype原型对象 每个构造函数都有一个prototype原型对象 prototype原型对象里的constructor指向构造函数本身 看一下代码就清楚了 function Person(nick, age){this.nick nick;this.…

数据结构学习笔记(Ⅳ):串

目录 1 串 1.1 定义与基本操作 1.定义 2.基本操作 1.2 串的存储结构 1.顺序存储 2.链式存储 3.基于顺序存储实现基本操作 2 串的朴素模式匹配算法 2.1 朴素模式匹配算法 2.2 KMP算法 1.优化思路 2.计算next数组 2.3 KMP算法优化 1 串 1.1 定义与基本操作 1.定义…

02.OpenWrt-进入开发板系统

02.OpenWrt-进入开发板系统 进入系统就是连接到系统shell,可是输入命令.说到shell第一个想到windows系统的PowerShell,在windows系统上多使用图形界面的方式进行与系统交互,毕竟windows的精髓就是图形界面,很少使用PowerShell命令.其实PowerShell的功能也非常强大,有时候记住一…

Flutter高仿微信-第38篇-单聊-转账

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取小视频的部…

【C++】Cmake使用教程(看这一篇就够了)

文章目录引言一 环境搭建二 简单入门2.1 项目结构2.2 示例源码2.3 运行查看三 编译多个源文件3.1 在同一个目录下有多个源文件3.1.1 简单版本3.1.1.1 项目结构3.1.1.2 示例代码3.1.1.3 运行查看3.1.2 进阶版本3.1.2.1 项目结构3.1.2.2 示例源码3.1.2.3 运行查看3.2 在不同目录下…

热门编程语言那么多,该选择哪个

编程语言那么多&#xff0c;该怎么选呢&#xff1f;无论是对找工作、还是打算转行新领域的同学们&#xff0c;起初都会有这样的困扰。这时候了解清楚编程语言的种类&#xff0c;到底该选哪个方向&#xff1f;将来能从事哪些岗位的工作&#xff1f;就比较重要了。与其盲目随从他…

CAS号:376364-38-4,rCRAMP (rat)

rCRAMP (rat) 是一种大鼠组织蛋白酶相关的抗菌肽&#xff0c;有助于大鼠脑肽/蛋白质提取物的抗菌活性。rCRAMP (rat) 是大鼠中枢神经系统先天免疫系统的关键参与者。rCRAMP (rat) is the rat cathelin-related antimicrobial peptide. rCRAMP (rat) contributes to the antibac…

计算机网络协议------从入门到深化

计算机网络通信 什么是通信协议 简单来说&#xff0c;通信协议就是计算机之间通过网络实现通信时事先达成 的一种“约定”&#xff1b;这种“约定”使那些由不同厂商的设备&#xff0c;不同CPU及不 同操作系统组成的计算机之间&#xff0c;只要遵循相同的协议就可以实现通 信。…

数据治理容易走进哪些误区?

在业界&#xff0c;大家都为如何做好数据治理而感到困惑。数据治理工作一定要先摸清楚数据的家底&#xff0c;规划好路线图&#xff0c;再进行决策。不然很容易走进误区中&#xff0c;无法自拔。下面总结了数据治理的7个常见误区&#xff0c;并给出一定建议&#xff0c;希望给予…

ERD Online 4.0.3_fix 元数据在线建模(免费、私有部署)

❝ 修复数据源导入的元数据&#xff0c;在没有中文注释修改的时候&#xff0c;导致表消失修复页面刷新导致404修改是否在关系图中显示的提示一键部署增加两种部署方式&#xff1a;IPPORT、DOMAIN增加手动部署方式、极大程度的实现部署定制化❞以 「root」 用户登录 Linux 主机执…

面试:dumpsys meminfo 内存信息含义

查看内存信息&#xff1a; adb shell dumpsys meminfo dumpsys meminfo显示的信息如图所示&#xff1a; 这里仅介绍我们需要重点关注的字段&#xff1a; Dalvik Heap&#xff1a;虚拟机占用的内存&#xff0c;可以理解为Java层占用的内存。Native Heap&#xff1a;Native层占…

python 循环引用的解决方法

目录 1、问题描述 2、原因 3、示例 4、解决办法 1、问题描述 编写python代码&#xff0c;运行中出现了&#xff1a;‘most likely due to a circular import ’ 这样的报错。 2、原因 循环引用问题&#xff0c;即A引用了B&#xff0c;B又引用了A&#xff0c;造成循环引用…

ctp交易接口股票怎么查询历史数据?

针对于ctp交易接口股票历史数据的查询&#xff0c;其基本原理就是利用api接口开发子系统最终就是开发完成并暴露一个标准的HTTPAPI接口&#xff0c;并将接口注册和接入到API网关。API设计和开发的核心思想仍然应该是基于领域对象建模驱动&#xff0c;通过领域对象建模很好的实现…

激光数据去畸变

机器人在使用激光雷达时必然会遇到的一个问题就是激光雷达数据去畸变。为什么会产生畸变呢&#xff0c;这是因为激光雷达产生激光数据时如果机器人在运动&#xff0c;那么就会产生运动畸变。 在ros下使用激光雷达时&#xff0c;激光数据是相对于激光本体坐标系的。画个图看下会…

【无人机】基于SDRE对NPS II无人机进行点对点(调节)控制(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入

目录 文章目录 前言 第01关 数字型注入 1.源码分析 2. sqlmap渗透 总结 前言 iwebsec靶场的SQL注入关卡共13关SQL注入漏洞&#xff0c;覆盖了数字型注入、字符型注入、报错型盲注、布尔型盲注、时间型盲注以及各种过滤绕过的注入&#xff0c;外加上二次注入&#xff0c;…

Recommendation Fairness: From Static to Dynamic 阅读笔记

论文链接https://arxiv.org/abs/2109.03150v1 Section 1 引言 越来越多的推荐系统开始将推荐建模为一个马尔可夫决策过程&#xff0c;并使用强化学习来解决这个问题。从而推荐系统场景下的公平性研究便面临着一个从静态评价与一次性干预static evaluation and one-shot interv…