alibaba easyexcel 导出excel使用

需求

传统导出,一般都是通过Workbook > Sheet > Row > Cell 获取详细Cell 设置值,比较麻烦,偶然遇到alibaba easyexcel 直接通过注解设置哪些需要导出 哪些忽略,发现特别好用。

pom依赖

        <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>

完整pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.demo</groupId><artifactId>tool-box-parent</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>org.example</groupId><artifactId>tool-box-export</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.demo</groupId><artifactId>tool-box-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0</version> <!-- 使用适合您项目的最新稳定版本 --><scope>provided</scope> <!-- 通常设置为provided,因为Servlet容器(如Tomcat)提供了实现 --></dependency><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency></dependencies>
</project>

Sheet1DataVo

package org.example.export.vo;import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;import java.util.Date;/*** 时间:2024/6/24* 作者:jinyu* 描述:*/
@Datapublic class Sheet1DataVo {@ExcelIgnoreprivate Long id;@ExcelProperty("名字2")private String name;@ExcelProperty("年龄2")private Integer age;@ExcelProperty("时间2")private Date createTime;public Sheet1DataVo(Long id, String name, Integer age, Date createTime) {this.id = id;this.name = name;this.age = age;this.createTime = createTime;}
}

Sheet2DataVo

package org.example.export.vo;import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;import java.util.Date;/*** 时间:2024/6/24* 作者:jinyu* 描述:*/@Data
public class Sheet2DataVo {@ExcelIgnoreprivate Long id;@ExcelProperty("名字")private String name;@ExcelProperty("年龄")private Integer age;@ExcelProperty("时间")private Date createTime;public Sheet2DataVo(Long id, String name, Integer age, Date createTime) {this.id = id;this.name = name;this.age = age;this.createTime = createTime;}
}

导出具体方法

package org.example.export.controller;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.example.export.vo.Sheet1DataVo;
import org.example.export.vo.Sheet2DataVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** 时间:2024/6/24* 作者:jinyu* 描述:*/@RestController
@Tag(name = "导出模板", description = "导出模板")@Slf4j
public class ExportController {@GetMapping("/exportDemo")public void exportDemo(@RequestParam("name") String name, HttpServletResponse response, HttpServletRequest request)  {log.info("name:{}",name);List<Sheet1DataVo> sheet1DataVos = new ArrayList<>();Sheet1DataVo sheet1DataVo = new Sheet1DataVo(1l,name,18,new Date());sheet1DataVos.add(sheet1DataVo);List<Sheet2DataVo> sheet2DataVos = new ArrayList<>();Sheet2DataVo sheet1DataVo1 = new Sheet2DataVo(1l,name,18,new Date());sheet2DataVos.add(sheet1DataVo1);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = null;try {fileName = URLEncoder.encode("导出测试", "UTF-8").replaceAll("\\+", "%20");} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");ExcelWriter excelWriter = null;try{excelWriter = EasyExcel.write(response.getOutputStream()).build();//创建一个sheetWriteSheet writeSheet = EasyExcel.writerSheet(0, "Sheet1DataVo").head(Sheet1DataVo.class).build();excelWriter.write(sheet1DataVos, writeSheet);//创建一个新的sheetWriteSheet writeSheet1 = EasyExcel.writerSheet(1, "Sheet2DataVo").head(Sheet2DataVo.class).build();excelWriter.write(sheet2DataVos, writeSheet1);} catch (IOException e) {throw new RuntimeException(e);} finally {if(excelWriter != null){excelWriter.finish();}}}
}

运行报错:
spring boot 报错 No primary or single unique constructor found for interface javax.servlet.http.HttpServletRequest
解决办法参考:

 https://blog.csdn.net/weixin_41491295/article/details/139105046?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171921105216800180634339%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171921105216800180634339&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-139105046-null-null.142^v100^pc_search_result_base3&utm_term=java.lang.IllegalStateException%3A%20No%20primary%20or%20single%20unique%20constructor%20found%20for%20interface%20javax.servlet.http.HttpServletResponse&spm=1018.2226.3001.4187

运行

在这里插入图片描述

完整代码地址gitee

https://gitee.com/jy_yjy/tool-box.git

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

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

相关文章

千年织锦:中国古代包文化的辉煌历程与现代传承

追溯至远古&#xff0c;我们的祖先就开始利用自然界的恩赐——皮革、植物纤维等&#xff0c;制作出最原始的包袋。随着时间的推移&#xff0c;技艺的提升&#xff0c;包的材质逐渐丰富起来&#xff0c;从粗糙到精致&#xff0c;从简单到复杂&#xff0c;每一次材质的革新都是人…

CentOS 7.9 CDH6.3.2集群生产环境实战部署指南

一、环境准备 1、系统环境&#xff1a; # cat /etc/os-release 2、准备工作&#xff1a; 部署资源分配 节点centos 7.9&#xff08;生产&#xff09;节点规划Postgresql部署组件备注pgsql32c、128G、2TB国产数据库Postgresql&#xff08;翰高&#xff09;可根据实际情况调整…

Wordpress图像编辑插件-palleon v3.8.1中文版语言包

Palleon是一个强大的WordPress图像编辑器&#xff0c;可以与您的WordPress网站无缝集成&#xff0c;让您快速高效地工作。它拥有为你的WordPress网站创建令人惊叹的图像所需的一切。 Palleon让您完全控制图像&#xff0c;允许您逐个像素进行更改。您可以轻松地裁剪、调整图像大…

漏洞利用开发基础学习记录

文章目录 简介Win32缓冲区溢出内容难点 SEH 溢出内容难点 Egg Hunters内容难点 Unicode 溢出内容难点 x86-64 缓冲区溢出内容难点 参考资料 简介 本文基于ERC.Xdbg漏洞分析文章进行初步归纳整理&#xff0c;主要有Win32 缓冲区溢出、SEH 溢出、Egg Hunters、Unicode 溢出、x86…

基于盲信号处理的人声分离

1.问题描述 在实际生活中&#xff0c;存在一种基本现象称为“鸡尾酒效应”&#xff0c;该效应指即使在非常嘈杂的环境中&#xff0c;人依然可以从噪声中提取出自己所感兴趣的声音。 在实际应用中&#xff0c;我们可能需要对混合的声音进行分离&#xff0c;此时已知的只有混合…

规上!西安市支持培育商贸企业达限纳统应统尽统申报奖励补助要求政策

西安市支持培育商贸企业达限纳统应统尽统工作方案 为加快培育消费市场主体&#xff0c;支持商贸企业扩大经营、做大做强&#xff0c;指导企业达限纳统、应统尽统&#xff0c;不断扩大我市限额以上商贸企业数量规模&#xff0c;促进全市经济社会高质量发展&#xff0c;结合我市…

springboot 集成阿里云 OSS

引入依赖 <!-- 阿里云oss依赖 --> <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.9.1</version> </dependency><?xml version"1.0" encoding"…

技术前瞻:华为鸿蒙HarmonyOS NEXT仓颉语言Beta招募亮点提前曝光

在科技迅猛发展的今天&#xff0c;华为的每一步创新都备受瞩目。6月21日&#xff0c;华为再次引领风潮&#xff0c;正式发布了自研的仓颉编程语言&#xff0c;并宣布开启HarmonyOS NEXT 仓颉语言开发者预览版Beta招募活动。这不仅是华为技术实力的展示&#xff0c;更是对开发者…

C语言基础笔记(全)

一、数据类型 数据的输入输出 1.数据类型 常量变量 1.1 数据类型 1.2 常量 程序运行中值不发生变化的量&#xff0c;常量又可分为整型、实型(也称浮点型)、字符型和字符串型 1.3 变量 变量代表内存中具有特定属性的存储单元&#xff0c;用来存放数据&#xff0c;即变量的值&a…

day53--ELK搜索

ELK搜索高级课程 1&#xff0e; 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch&#xff08;简称es&#xff09;、Logstash、Kibana 三个开源软件的组成的一个整体。这三个软件合成ELK。是用于数据抽取&#xff08;Logstash&#xff09;、搜索分析&#xff08;Elast…

win10系统自动关闭屏幕和自动睡眠不生效的解决办法

在cmd中执行 powercfg /requests 检查影响电源睡眠或休眠的驱动或进程 如果执行结果遇到下面这种带括号很长一串的情况SYSTEM: [DRIVER] Conexant SmartAudio HD (HDAUDIO\FUNC_01&VEN_14F1&DEV_510F&SUBSYS_17AA502A&REV_1001\4&f35eced&0&0001…

学习笔记——动态路由——OSPF(报头信息、报文信息、三张表)

六、OSPF协议的报头信息、报文信息、三张表 OSPF的协议报文在一个广播域内进行传递&#xff0c;是直接封装在IP报文中的&#xff0c;协议号为89。 OSPF本身5种类型&#xff1a;分别是Hello报文、DD报文、LSR报文、LSU报文、LSAck报文&#xff0c;各种不同类型的LSA其实只是包含…

Acitity跳转延时10s会导致anr的时序问题讨论

背景&#xff1a; 针对前些天直播时候&#xff0c;主要讲解是launcher启动app&#xff0c;Activity onResume延时10s不会anr&#xff0c;但是Activity内部activity1跳转activity2就会anr问题展开了讨论 https://mp.weixin.qq.com/s/_uA5yKUTUw-9H-tWxGNK9g 这个原因为啥已经在…

『Z-Workshop』 6月22日线下ALCOVE分享活动

2024 求是创新 ZJUBCA Sponsored by the ALCOVE Community TIME&#xff1a;2024/06/22 ADD&#xff1a;浙江大学紫金港校区 --- Alcove 是 Aptos 公链与 Alibaba Cloud 共同打造的亚洲首个 Move 开发者社区&#xff0c;致力于支持开发者使用 Move 语言构建下一代 Web3 应用&am…

深入解析Java ThreadLocal及其内存管理机制

在多线程编程中&#xff0c;如何保证线程间的数据隔离和线程安全是一个重要问题。Java提供的ThreadLocal类通过让每个线程拥有独立的数据副本&#xff0c;巧妙地解决了这个问题。本文将深入分析ThreadLocal的工作机制&#xff0c;并探讨如何防止内存泄漏。 目录 ThreadLocal基…

综合管廊挂轨巡检机器人:安全高效管理的新力量

综合管廊、电力管廊等作为承载着各类电缆和管线的重要通道&#xff0c;管廊的安全和可靠性对城市的运行至关重要。传统人工巡检效率低、劳动强度大&#xff0c;且可能存在巡检不及时、不准确等问题。难以满足日益复杂和庞大的管廊系统的监控需求。为了解决这些问题&#xff0c;…

如何选择一个好的汽车油封制造商?

汽车的每一个零部件都至关重要&#xff0c;其中&#xff0c;油封的作用更是不可忽视。它们确保了液体和气体在汽车内部的正确流动&#xff0c;防止了泄漏。因此&#xff0c;选择一个可靠的汽车油封制造商就显得尤为重要。那么&#xff0c;我们应该如何做出明智的选择呢? 首先…

MySQL用于分析查询性能的命令

1、EXPLAIN 1、使用EXPLAIN命令可以查看MySQL如何执行SQL查询语句&#xff0c;包括它是否使用了索引、使用了哪些索引、表扫描方式等。 2、示例&#xff1a;EXPLAIN SELECT * FROM table_name WHERE column_name value; 2、SHOW PROFILE 1、SHOW PROFILE命令用于显示查询执…

RabbitMQ基本概念

RabbitMQ是AMQP协议的一个开源实现&#xff0c;所以其基本概念也就是的 AMQP 协 议中的基本概念。如图3-1所示是 RabbitMQ 的整体架构图。 Message(消息):消息是不具名的&#xff0c;它由消息头和消息体组成。消息体是不透明的&#xff0c; 而消息头则由一系列可选属性组成&…

vue3中的图片懒加载指令及全局注册

vue3中的图片懒加载指令及全局注册 最近重新刷了一遍黑马的小兔鲜前端项目&#xff0c;发现有个懒加载的指令之前还没有用过。而且写法相对固定&#xff0c;因此记录一下 首先&#xff0c;懒加载&#xff08;Lazy Loading&#xff09;的作用是延迟加载某些资源或组件&#xf…