EasyPOI入门

EasyPOI入门

前言

EasyPOI是一个基于Apache POI的Java库,用于简化Excel文档的导入和导出操作。EasyPOI通过注解的方式,极大地减少了代码量和复杂度,使得Excel操作变得更加简单直观。本篇博客将介绍如何使用EasyPOI进行Excel文件的导入和导出操作。

一、引入EasyPOI依赖

首先,在你的项目中引入EasyPOI的依赖。这里以Maven项目为例,添加以下依赖到pom.xml文件中:

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>4.4.0</version>
</dependency>

二、创建数据模型

EasyPOI通过注解的方式将Java对象映射到Excel的行和列。因此,我们需要为我们的数据创建Java类并使用EasyPOI的注解进行标注。例如,我们创建一个用户数据的模型类User

import cn.afterturn.easypoi.excel.annotation.Excel;public class User {@Excel(name = "用户ID")private String userId;@Excel(name = "用户名")private String username;@Excel(name = "年龄")private Integer age;// getters and setters
}

三、导出Excel文件

假设我们有一组用户数据需要导出到Excel文件中。我们可以使用EasyPOI的ExcelExportUtil类来实现这一功能:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Workbook;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class ExcelExporter {public static void main(String[] args) throws IOException {List<User> userList = new ArrayList<>();userList.add(new User("1", "Alice", 25));userList.add(new User("2", "Bob", 30));Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户数据", "用户"), User.class, userList);FileOutputStream fos = new FileOutputStream("用户数据.xlsx");workbook.write(fos);fos.close();}
}

运行上述代码后,你将在项目目录中看到一个名为“用户数据.xlsx”的Excel文件,其中包含导出的用户数据。

四、导入Excel文件

EasyPOI同样简化了Excel文件的导入操作。我们可以使用ExcelImportUtil类将Excel文件中的数据读取到Java对象中。假设我们有一个包含用户数据的Excel文件,我们可以使用以下代码将其导入:

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;import java.io.File;
import java.util.List;public class ExcelImporter {public static void main(String[] args) {ImportParams params = new ImportParams();params.setTitleRows(1); // 表示表格的标题行数params.setHeadRows(1);  // 表示表头行数try {List<User> userList = ExcelImportUtil.importExcel(new File("用户数据.xlsx"), User.class, params);userList.forEach(user -> System.out.println(user.getUsername()));} catch (Exception e) {e.printStackTrace();}}
}

运行上述代码后,你将看到Excel文件中的用户数据被打印到控制台。

五、将多个表的数据导出到一个Excel文件中

有时候,我们需要将多个表的数据导出到一个Excel文件中的不同Sheet。我们可以通过以下方式实现:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class MultiSheetExcelExporter {public static void main(String[] args) throws IOException {List<User> userList = new ArrayList<>();userList.add(new User("1", "Alice", 25));userList.add(new User("2", "Bob", 30));List<Order> orderList = new ArrayList<>();orderList.add(new Order("1001", 250.0));orderList.add(new Order("1002", 300.0));Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户数据", "用户"), User.class, userList);Sheet orderSheet = workbook.createSheet("订单数据");ExcelExportUtil.exportExcel(new ExportParams("订单数据", "订单"), Order.class, orderList, orderSheet.getSheetContext());FileOutputStream fos = new FileOutputStream("多表数据.xlsx");workbook.write(fos);fos.close();}
}

在Spring Boot项目中集成并使用EasyPOI

一、引入依赖

在您的 Spring Boot 项目的 pom.xml 文件中添加 EasyPOI 依赖:

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version>
</dependency>
二、创建数据模型

创建用于映射 Excel 数据的 Java 类,并使用 EasyPOI 的注解进行标注。例如,创建一个 User 类:

import cn.afterturn.easypoi.excel.annotation.Excel;public class User {@Excel(name = "用户ID")private String userId;@Excel(name = "用户名")private String username;@Excel(name = "年龄")private Integer age;// Getters and setters
}
三、编写导出 Excel 文件的 Controller

在 Spring Boot 中编写一个 Controller 来处理 Excel 文件的导出请求:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@RestController
public class ExcelController {@GetMapping("/export")public void exportExcel(HttpServletResponse response) throws IOException {List<User> userList = new ArrayList<>();userList.add(new User("1", "Alice", 25));userList.add(new User("2", "Bob", 30));Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户数据", "用户"), User.class, userList);response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=users.xlsx");workbook.write(response.getOutputStream());}
}
四、编写导入 Excel 文件的 Controller

在 Spring Boot 中编写一个 Controller 来处理 Excel 文件的导入请求:

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.util.List;@RestController
public class ExcelController {@PostMapping("/import")public String importExcel(@RequestParam("file") MultipartFile file) {try {ImportParams params = new ImportParams();params.setTitleRows(1); // 表示表格的标题行数params.setHeadRows(1);  // 表示表头行数List<User> userList = ExcelImportUtil.importExcel(file.getInputStream(), User.class, params);userList.forEach(user -> System.out.println(user.getUsername()));return "导入成功";} catch (Exception e) {e.printStackTrace();return "导入失败";}}
}
五、运行项目并测试

启动 Spring Boot 项目,并通过浏览器或 Postman 访问以下 URL 来测试导出功能:

http://localhost:8080/export

使用 Postman 或其他工具测试导入功能,向以下 URL 发送 POST 请求,并上传 Excel 文件:

http://localhost:8080/import
六、总结

通过上述步骤,您可以在 Spring Boot 项目中轻松集成并使用 EasyPOI 来处理 Excel 文件。EasyPOI 提供了丰富的注解和简化的 API,使得 Excel 操作变得更加方便和高效。希望这篇文章能帮助您快速上手 EasyPOI 并在您的项目中灵活应用。

如果您有更多需求或问题,可以参考 EasyPOI 的官方文档和示例,了解更多高级用法和技巧。Happy coding!

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

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

相关文章

Linux系统学习——指令四

Linux系统学习——指令四 Linux 系统学习——指令四查看文件MD5校验和fuser 指令基本语法常用选项访问类型使用示例 系统信息 Linux 系统学习——指令四 查看文件MD5校验和 在Linux中&#xff0c;你可以使用 md5sum 命令来查看一个文件的MD5校验和。以下是具体的操作方法&…

河南资信乙级预评价:人员需缴唯一社保吗?

河南资信乙级预评价中&#xff0c;人员确实需要缴纳唯一社保。以下是详细的解读和归纳&#xff1a; 一、社保唯一性的定义 社保唯一性指的是参与河南资信乙级预评价的咨询工程师&#xff08;投资&#xff09;必须在申请单位有唯一且连续的社保缴纳记录。这一要求旨在确保咨询…

【python013】pyinstaller打包PDF提取脚本为exe工具

1.在日常工作和学习中&#xff0c;遇到类似问题处理场景&#xff0c;如pdf文件核心内容截取&#xff0c;这里将文件打包成exe可执行文件&#xff0c;实现功能简便使用。 2.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 3.欢迎点赞、关…

Pura 70 系列超高速风驰闪拍,捕捉美好,告别抓拍模糊

及时而准确的将画面定格&#xff0c;把事件最具有表现力的瞬间直观、真实地传达给观者&#xff0c;以使将抓拍影响的意义发挥最大化&#xff0c;由于抓拍摄影作品大多反映的是比较自然&#xff0c;真实的人和事&#xff0c;得到了社会的广泛认可&#xff0c;抓拍摄影也正日益成…

vue项目无后台版本打包上传到服务器

打包项目 也可以在文件目录下npm run build 生成dist文件夹 将dist文件夹里的所有文件拷贝到站点的根目录&#xff0c;这里使用宝塔面板进行操作 前提你得先创建站点&#xff0c;域名绑定等操作

直接调用 Java 线程的 run() 方法会发生什么?

文章目录 前言回顾run() 方法 vs start() 方法run()方法start()方法 直接调用 run() 方法的影响直接调用 run() 方法调用 start() 方法 示例解析结论个人简介 前言 在Java中&#xff0c;多线程编程是一个重要的概念&#xff0c;尤其是在处理并发任务时。线程是Java中实现多线程…

Pytest教程:Pytest插件原理

Pytest的插件系统是其强大功能的核心,它允许用户和开发者扩展和定制测试框架的行为。要深入理解Pytest插件的原理,我们需要从Pytest的架构和设计模式开始,然后深入到底层源码。 1.插件原理 1. Pytest的架构和设计模式 Pytest的设计遵循了几个关键的设计模式和原则,包括: …

#03动态规划

要点&#xff1a; 动态规划方法与贪心法、分治法的异同&#xff1b; 动态规划方法的基本要素与求解步骤&#xff1b; 动态规划方法的应用。 难点&#xff1a; 如何根据问题的最优子结构性质构造构造动态规划方法中的递归公式或动态规划方程。 动态规划的基本思想 动态规…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验9 IPv4地址 — 划分子网

一、实验目的 1.学习划分子网的方法&#xff1b; 2.验证子网掩码的作用。 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&#xff0c;完成对应实验。 三、实验内容 1.构建网络拓扑&#xff1b; 2.划分子网&#xff1b; …

vscode_cmake_stm32_lvgl移植及显示优化

1 LVGL移植 本文使用的环境如下&#xff1a; STM32H743FreeRTOSst7789 lcd(320*240) 下载 LVGL源码&#xff0c;本文使用Release v9.1.0&#xff1b; 将压缩包解压到工程目录&#xff0c;例如stm32h7xx_cmake_project/components/lvgl-9.1.0&#xff0c;如下所示&#xff1a; …

C#调用微软库的实现语音识别

早期&#xff0c; 我们用SpeechRecognitionEngine如下来进行语音识别&#xff0c;但是复杂的词条加上环境噪声&#xff0c;其实成功率是不高的。 SpeechRecognitionEngine recognizer new SpeechRecognitionEngine(new System.Globalization.CultureInfo("zh-CN"));…

算法04 模拟算法之一维数组相关内容详解【C++实现】

大家好&#xff0c;我是bigbigli&#xff0c;模拟算法我们将分为几个章节来讲&#xff0c;今天我们只看一维数组相关的题目 目录 模拟的概念 训练&#xff1a;开关灯 解析 参考代码 训练&#xff1a;数组变化 解析 参考代码 训练&#xff1a;折叠游戏 解析 参考代码 …

[leetcode]rotate-array 轮转数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start 1;end - 1;}}void rotate(vector<int>& nums, int k) {k % num…

酷开系统丨酷开科技AI赋能数字大屏,开启智能家居新纪元

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的崛起无疑为科技领域带来了革命性的变化。酷开科技&#xff0c;正以其独特的"AI数字大屏"战略&#xff0c;将创新理念转化为现实&#xff0c;引领行业发展新潮流。 酷开科技的智能电视操作系统…

BarTender版软件下载及安装教程

​根据行业数据显示强大的配套应用软件甚至能够管理系统安全性、网络打印功能、文档发布、打印作业记录等&#xff0c;为满足不同的需要和预算&#xff0c;BarTender 提供四个版本&#xff0c;每个都拥有卓越的功能和特性。根据软件大数据显示多国语言支持&#xff1a;轻松设计…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《兼顾配电网韧性提升的电动汽车换电站容量优化配置方法 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

6.25长难句打卡

“Carry a book with you at all times” can actually work, too—providing you dip in often enough, so that reading becomes the default state from which you temporarily surface to take care of business, before dropping back down. “随时随身携带书籍”实际上也…

【Launcher3】解决谷歌桌面的小部件重启后消失问题

1-问题摘要 这次主要解决困扰了我很久的时钟消失问题&#xff0c;大概是去年10月刚开始做EDLA项目的时候&#xff0c;需要定制谷歌桌面&#xff0c;桌面布局大概要改成这样&#xff1a; 时间显示在谷歌搜索框的上方,而安卓原生桌面大概是这样子的 我们开发一开始是使用小部件…

微信小程序使用ThreeX开发3d

注意&#xff1a;本代码是用uniapp开发微信小程序&#xff0c;模型使用.glb格式&#xff0c;以下出现&#xff08;glb模型压缩&#xff09;代表改代码是使用压缩时需要使用的&#xff0c;不压缩可以不写 Demo:gitee地址 焦明玉/vue2_threex_demo 1.微信小程序后台添加Threex…

web刷题记录

[HDCTF 2023]SearchMaster 打开环境&#xff0c;首先的提示信息就是告诉我们&#xff0c;可以用post传参的方式来传入参数data 首先考虑的还是rce&#xff0c;但是这里发现&#xff0c;不管输入那种命令&#xff0c;它都会直接显示在中间的那一小行里面&#xff0c;而实际的命令…