SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)
有天上飞的概念,就要有落地的实现
概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍
先赞后看,养成习惯
来源:Springboot使用POI实现导出Excel文件示例的搜索结果-阿里云开发者社区
SpringBoot 图文教程系列文章目录
SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」
SpringBoot图文教程2—日志的使用「logback」「log4j」
SpringBoot图文教程3—「‘初恋’情结」集成Jsp
SpringBoot图文教程4—SpringBoot 实现文件上传下载
SpringBoot图文教程5—SpringBoot 中使用Aop
SpringBoot图文教程6—SpringBoot中过滤器的使用
SpringBoot图文教程7—SpringBoot拦截器的使用姿势这都有
SpringBoot图文教程8—SpringBoot集成MBG「代码生成器」
前言
Excel文件的导入导出功能,在项目中可以说是一个极其常见的功能了,使用到这技术的业务场景也非常多,例如:客户信息的导入导出,运营数据的导入导出,订单数据的导入导出等等。
那么在 SpringBoot 中如何使用 Poi 呢?从本文开始将会说三种使用 Poi 的姿势:Apache Poi,EasyPoi,阿里开源的EasyExcel。
话不多说,马上开始。
集成 Poi
什么是 Poi
Apache Poi 是 Apache 的一个开源项目,用Java代码通过 poi 技术可以实现 读取 和 生成 Excel 文档。
关于 Poi 的简介非常的少,接下来我们简单说一些和Excel相关的常识
通过 office Excel软件或者 wps 常用的Excel格式有两种:xls 和 xlsx
上图中的两个文件都是Excel文件,在一个Excel文件中包含若干张表
一张表中可以分为很多行 row ,每行又分为很多单元格 cell
Poi 对 Excel 抽象出来的对象
刚才简单的说过了Excel文件相关的情况,但是那是在电脑中使用Excel需要用到的东西,如果要通过 SpringBoot 导入导入 Excel 文件,就要通过类和方法来进行。
于是在 Poi 中对以上提到的所有的名词都做了一定的封装。对应关系如下:
Excel中的概念 | Poi对应的对象 |
---|---|
Excel 文件 | HSSFWorkbook (xls)XSSFWorkbook(xlsx) |
Excel 的工作表 | HSSFSheet |
Excel 的行 | HSSFRow |
Excel 中的单元格 | HSSFCell |
Excel 字体 | HSSFFont |
Excel 单元格样式 | HSSFCellStyle |
Excel 颜色 | HSSFColor |
合并单元格 | CellRangeAddress |
Poi 的基本使用
要导出的实体类 如下:
image.png
1. 在项目中导入依赖
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.14</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.14</version></dependency>
2. 在测试类中写导出的代码如下:
/*** 导出数据*/@Testpublic void test2() throws IOException {
// 0.准备数据User user = new User();user.setUserId(1);user.setUserName("hhhh");user.setUserSex("男");String[] titles = {"编号","名字","性别"};/*** 先写入 标题栏数据*/
// 1.创建文件对象 创建HSSFWorkbook只能够写出为xls格式的Excel
// 要写出 xlsx 需要创建为 XSSFWorkbook 两种Api基本使用方式一样HSSFWorkbook workbook = new HSSFWorkbook();// 2.创建表对象HSSFSheet sheet = workbook.createSheet("users");// 3.创建标题栏(第一行) 参数为行下标 行下标从0开始HSSFRow titleRow = sheet.createRow(0);// 4.在标题栏中写入数据for (int i = 0; i < titles.length; i++) {
// 创建单元格HSSFCell cell = titleRow.createCell(i);cell.setCellValue(titles[i]);}/*** 写入用户数据*/
// 5 创建行 如果是用户数据的集合 需要遍历HSSFRow row = sheet.createRow(1);// 6 将用户数据写入到行中row.createCell(0).setCellValue(user.getUserId());row.createCell(1).setCellValue(user.getUserName());row.createCell(2).setCellValue(user.getUserSex());// 文件保存到本地 参数为要写出的位置workbook.write(new FileOutputStream("/Users/k/Desktop/hhh.xls"));}
生成的Excel文件如下
3. Excel导入
/*** 文件导入 实际上就是文件导出反向操作*/@Testpublic void test3() throws Exception {
// 1.通过流读取Excel文件FileInputStream inputStream = new FileInputStream("/Users/k/Desktop/hhh.xls");
// 2.通过poi解析流 HSSFWorkbook 处理流得到的对象中 就封装了Excel文件所有的数据HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
// 3.从文件中获取表对象 getSheetAt通过下标获取HSSFSheet sheet = workbook.getSheetAt(0);
// 4.从表中获取到行数据 从第二行开始 到 最后一行 getLastRowNum() 获取最后一行的下标int lastRowNum = sheet.getLastRowNum();for (int i = 1; i <= lastRowNum; i++) {
// 通过下标获取行HSSFRow row = sheet.getRow(i);
// 从行中获取数据/*** getNumericCellValue() 获取数字* getStringCellValue 获取String*/double id = row.getCell(0).getNumericCellValue();String name = row.getCell(1).getStringCellValue();String sex = row.getCell(2).getStringCellValue();// 封装到对象中User user = new User();user.setUserId((int) id);user.setUserName(name);user.setUserSex(sex);// 将对象添加数据库System.out.println(user);}}
总结
Tips:本文只讲解了 Poi 最基本的使用方式 如果需要其他更加全面的使用方式
可以关注后续文章 Easypoi 和 EasyExcel 以及 Poi中文 API 文档 「40种操作 Excel文件的姿势」
恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。
让我们再次回顾本文的学习目标
掌握SpringBoot中Poi的使用
要掌握SpringBoot更多的用法,请持续关注本系列教程。
求关注,求点赞,求转发
欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。
lai
SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)相关推荐
- SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程4—SpringBoot 实现文件上传下载(亲测)
SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2-日志的使用「logback」「log4j」 Spring ...
- SpringBoot使用poi或EasyExcel导入导出Excel文件
使用poi导入导出Excel 首先引入poi依赖包 03版本的Excel和07版本的Excel所需要的依赖不同,都需要导入. 记录问题: 最初导入的poi包为3.6版本.WorkBook类和Sheet ...
- springboot处理参数再转发请求_SpringBoot图文教程6—SpringBoot中过滤器的使用
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文系列教程技术大纲 SpringBoot 图文教程系列文章 ...
- springboot文件上传和下载工具_SpringBoot图文教程7—SpringBoot拦截器的使用姿势这都有...
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- 使用easypoi导入导出excel,SSM和SpringBoot通用代码
easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉 ...
- SpringBoot图文教程「概念+案例 思维导图」「基础篇上」
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐 ...
- springboot改文件头_SpringBoot图文教程4—SpringBoot 实现文件上传下载
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...
最新文章
- 安卓ttf格式的字体包_多看字体包优化篇
- UVa10763 交换学生
- 【学习笔记】树形结构基础
- (原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示
- springmvc九:spring mvc 简单介绍
- VMC Command Line
- Spring Boot工程支持HTTP和HTTPS,HTTP重定向HTTPS
- uploadify scriptData参数无法传参的问题
- 解析Health端点数据获取异常数据
- java keytool工具详解
- 使用pgAdmin 4来修改PostgreSQL中的用户密码
- 视频教程-MATLAB高等数学计算与可视化-Matlab
- win10 中 ,python 创建虚拟化环境
- nodejs返回带图片的HTML页面,Nodejs实现简单的网页图片获取
- 如何使用 scp 将文件夹从远程复制到本地?
- 关于信息熵 ,KL散度,交叉熵,一文读懂(bushi)。
- 面试后说hold什么意思_面试快结束时,如果面试官对你说这几句话,说明你被淘汰了!...
- 经典Ghost XP
- 计算机性能的5个指标,计算机网络(一)—— 概述(5):计算机网络的性能指标...
- 【项目问题总结】4:修改操作的重复性验证逻辑
热门文章
- QT的QSetIterator类的使用
- QT的QRandomGenerator类的使用
- Scikit-learn——train_test_split()方法的功能和使用
- B02_NumPy数据属性(ndarray.ndim,ndarray.shape,ndarray.itemsize,ndarray.flags)
- SpringBoot和MyBatis集成案例(学习笔记)
- NAMENODE工作机制,元数据管理(元数据存储机制、元数据手动查看)、元数据的checkpoint、元数据目录说明(来自学习资料)
- SQL Server 堆heap 非聚集索引 Nonclustered index 行号键查找RID loopup结合执行计划过程详解
- java se 7web_JAX-WS ::从独立的Java 7 SE客户端调用Web服务的方法
- eclips mysql jndi_Eclipse +Tomcat配置JNDI数据源
- linux字符设备驱动的 ioctl 幻数