Springboot 指定自定义模板导出Excel文件

简介: Springboot 指定自定义模板导出Excel文件

前言



之前写过一篇极其简单的excel导入导出,是单个文件的:

Springboot 最简单的结合MYSQL数据实现EXCEL表格导出及数据导入_小目标青年的博客-CSDN博客


还写过一篇单个,多个 excel文件导出,转成ZIP包的:

Springboot 导出Excel文件,多个需要压缩成 zip 包_小目标青年的博客-CSDN博客


然后:

image.png


于是该篇就来了, 指定模板(自定义)导出数据,就像:image.png


正文



开始实战:

 

pom.xml依赖:

 

        <!-- 导入和导出-->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.0.3</version>
        </dependency>


我们导出数据的实体类  UserExcelDTO.java


import cn.afterturn.easypoi.excel.annotation.Excel;
/**
 * @Author: JCccc
 * @Date: 2022-7-14 10:58
 * @Description:
 */
public class UserExcelDTO {
    @Excel(name = "学号", height = 8, width = 13, isImportField = "true")
    private Integer id;
    @Excel(name = "姓名", height = 8, width = 13, isImportField = "true")
    private String  userName;
    @Excel(name = "年龄", height = 8, width = 13, isImportField = "true")
    private String  userAge;
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", userAge='" + userAge + '\'' +
                '}';
    }
    public UserExcelDTO() {
    }
    public UserExcelDTO(Integer id, String userName, String userAge) {
        this.id = id;
        this.userName = userName;
        this.userAge = userAge;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserAge() {
        return userAge;
    }
    public void setUserAge(String userAge) {
        this.userAge = userAge;
    }
}


里面使用了 @Excel注解标记一下相关字段


然后自定义模板, 注意里面细节:


image.png


每一行数据都是一个对象,都在list 里面,

所以看到 首个字段 和 末尾最后的字段 是有 括号的   {}:


image.png


示例格式:


{{$fe: list t.id

t.userName

t.userAge}}

然后把自定义模板文件丢到 静态资源路径下:


image.png


然后是实现使用自定义模板,填充list数据导出excel文件:


    /**
     * excel导出 列表 指定模板
     *
     * @return
     */
    @GetMapping(value = "/exportAssignTemplateExcel")
    public void opportunityExport(HttpServletResponse response) {
        List<UserExcelDTO> exportList = new ArrayList<>();
        UserExcelDTO userExcel1=new UserExcelDTO(1001,"JCccc","18");
        UserExcelDTO userExcel2=new UserExcelDTO(1002,"ACccc","29");
        UserExcelDTO userExcel3=new UserExcelDTO(1003,"GCccc","50");
        exportList.add(userExcel1);
        exportList.add(userExcel2);
        exportList.add(userExcel3);
        Map map = Maps.newHashMap();
        map.put("list", exportList);
        //获取导出模板地址
        ClassPathResource classPathResource = new ClassPathResource("static/export/template/MyUserTemplate.xlsx");
        String path = classPathResource.getPath();
        TemplateExportParams templateExportParams1 = new TemplateExportParams(path);
        Workbook wb = ExcelExportUtil.exportExcel(templateExportParams1, map);
        String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy_MM_dd_HH_mm_ss"));
        String fileName = "用户数据"+time+".xlsx";
        try {
            response.setContentType("application/octet-stream;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
            response.flushBuffer();
            wb.write(response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


代码简析:


image.png


调用一下接口,看看效果:


image.png


excel文件内容:


image.png


好了,该篇就到这。

相关文章
|
1月前
|
XML Java Maven
springboot-多环境配置文件
本文介绍了如何创建开发和生产环境的配置文件,并在IDEA和Maven中进行配置。开发环境中,通过设置profile为`dev`来指定配置文件;生产环境中,使用Maven命令参数`-Pprod`打包并指定配置文件。公共配置可放在`application.yml`中统一管理。日志配置需确保`logback-spring.xml`中的profile正确,以保证日志正常输出。
springboot-多环境配置文件
|
2月前
|
存储 前端开发 Java
Springboot静态资源映射及文件映射
在Spring Boot项目中,为了解决前端访问后端存储的图片问题,起初尝试通过静态资源映射实现,但发现这种方式仅能访问打包时已存在的文件。对于动态上传的图片(如头像),需采用资源映射配置,将特定路径映射到服务器上的文件夹,确保新上传的图片能即时访问。例如,通过`addResourceHandler(&quot;/img/**&quot;).addResourceLocations(&quot;file:E:\\myProject\\forum_server\\&quot;)`配置,使前端可通过URL直接访问图片。
148 0
Springboot静态资源映射及文件映射
|
1月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
2月前
|
文字识别 Serverless 开发工具
【全自动改PDF名】批量OCR识别提取PDF自定义指定区域内容保存到 Excel 以及根据PDF文件内容的标题来批量重命名
学校和教育机构常需处理成绩单、报名表等PDF文件。通过OCR技术,可自动提取学生信息并录入Excel,便于统计分析和存档管理。本文介绍使用阿里云服务实现批量OCR识别、内容提取、重命名及导出表格的完整步骤,包括开通相关服务、编写代码、部署函数计算和设置自动化触发器等。提供Python示例代码和详细操作指南,帮助用户高效处理PDF文件。 链接: - 百度网盘:[链接](https://pan.baidu.com/s/1mWsg7mDZq2pZ8xdKzdn5Hg?pwd=8866) - 腾讯网盘:[链接](https://share.weiyun.com/a77jklXK)
226 5
|
5月前
|
网络协议 Java
springboot配置hosts文件
springboot配置hosts文件
97 11
|
5月前
|
存储 前端开发 JavaScript
|
存储 前端开发 Java
SpringBoot文件上传和下载
SpringBoot文件上传和下载
SpringBoot文件上传和下载
|
前端开发 Java Spring
SpringBoot文件上传下载
SpringBoot文件上传下载
277 0
SpringBoot文件上传下载
|
Java
SpringBoot文件上传下载
项目中经常会有上传和下载的需求,这篇文章简述一下springboot项目中实现简单的上传和下载。 新建springboot项目,前台页面使用的thymeleaf模板,其余的没有特别的配置,pom代码如下: 4.
4171 0
|
Java Apache 数据库连接
SpringBoot 文件上传/下载
有啥不懂的或者出错的可以在下面留言。 1. 文件上传 //上传路径 String folder = "C:\\code\\springboot-springsecurity\\security-demo\\src\\main\\java...
2478 0

热门文章

最新文章

下一篇
oss创建bucket