SpringBoot 设置Excel 多sheet导出

这篇博客详细介绍了如何在SpringBoot应用中实现Excel文件的多sheet导出功能,涵盖了从创建工作簿到填充数据的完整过程,适用于Java开发者进行数据导出操作。
先交代下业务背景,做的是问卷调研的答卷导出,每一个人答卷设置一个sheet,
一般的Excel导出是按单个sheet的最大行数(默认65536 )为基数,超过这个基数后再分一个sheet。
对数据的处理以 List<List<T>>格式操作的 简单来说就是多取一层list也就多一层循环,主要方法有以下两个。
	//填充excel
	public void fillExcelDataExam(int index, Row row,int getList)
    {
   
   
    	//lists --> List<List<T>>
        List<T> ts = lists.get(getList);
        int startNo = index * sheetSize;
        int endNo = Math.min(startNo + sheetSize, ts.size());
        for (int i = startNo; i < endNo; i++)
        {
   
   
            row = sheet.createRow(i + 1 - startNo);
            // 得到导出对象.
            T vo = (T) ts.get(i);
            int</
### Spring Boot 使用 EasyPoi 实现 Sheet 导出 Excel 的功能 在 Spring Boot 项目中使用 EasyPoi 库实现 Sheet 导出 Excel 功能,可以通过定义个数据源并结模板导出的方式完成。以下是具体的实现方法和示例代码。 #### 1. 引入依赖 首先需要在 `pom.xml` 文件中引入 EasyPoi 的相关依赖[^3]。 ```xml <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.4.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> <version>4.4.0</version> </dependency> ``` #### 2. 定义实体类 定义一个或个实体类,并通过注解标注 Excel 列的对应关系[^3]。 ```java import cn.afterturn.easypoi.excel.annotation.Excel; public class User { @Excel(name = "用户ID") private Integer id; @Excel(name = "用户姓名") private String name; @Excel(name = "用户年龄") private Integer age; // getter and setter } ``` #### 3. Sheet 导出逻辑 以下是实现 Sheet 导出的核心代码[^5]: ```java import cn.afterturn.easypoi.excel.export.TemplateExportParams; import cn.afterturn.easypoi.excel.ExcelExportUtil; import org.apache.poi.ss.usermodel.Workbook; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public void exportMultiSheetExcel(HttpServletResponse response) throws Exception { // 准备数据源 List<User> userList1 = new ArrayList<>(); userList1.add(new User(1, "张三", 25)); userList1.add(new User(2, "李四", 30)); List<User> userList2 = new ArrayList<>(); userList2.add(new User(3, "王五", 28)); userList2.add(new User(4, "赵六", 35)); // 创建 Map 存储每个 Sheet 的数据 Map<String, Object> sheet1Data = new HashMap<>(); sheet1Data.put("userList", userList1); Map<String, Object> sheet2Data = new HashMap<>(); sheet2Data.put("userList", userList2); List<Map<String, Object>> dataList = new ArrayList<>(); dataList.add(sheet1Data); dataList.add(sheet2Data); // 设置模板参数 TemplateExportParams params = new TemplateExportParams("template/multi_sheet_template.xlsx"); params.setSheetNum(new Integer[]{0, 1}); // 指定Sheet // 导出 Excel Workbook workbook = ExcelExportUtil.exportExcel(params, dataList); // 输出到浏览器 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=multi_sheet_export.xlsx"); OutputStream out = response.getOutputStream(); workbook.write(out); out.flush(); out.close(); } ``` #### 4. 注意事项 - 模板文件路径为相对路径,位于项目的 `resources` 目录下[^4]。 - 如果没有使用模板,可以直接通过 `ExcelExportUtil` 提供的其他重载方法实现导出[^3]。 - 需要确保每个 Sheet 的数据结构与模板中的占位符匹配。 ### 示例总结 上述代码展示了如何在 Spring Boot 中使用 EasyPoi 实现 Sheet 导出功能。通过定义个数据源并结模板导出,可以灵活地生成包含SheetExcel 文件[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值