有天上飞的概念,就要有落地的实现web
概念十遍不如代码一遍,朋友,但愿你把文中全部的代码案例都敲一遍面试
先赞后看,养成习惯数据库
SpringBoot 图文教程系列文章目录apache
Excel文件的导入导出功能,在项目中能够说是一个极其常见的功能了,使用到这技术的业务场景也很是多,例如:客户信息的导入导出,运营数据的导入导出,订单数据的导入导出等等。app
那么在 SpringBoot 中如何使用 Poi 呢?从本文开始将会说三种使用 Poi 的姿式:Apache Poi,EasyPoi,阿里开源的EasyExcel。 学习
话很少说,立刻开始。测试
Apache Poi 是 Apache 的一个开源项目,用Java代码经过 poi 技术能够实现 读取 和 生成 Excel 文档。字体
关于 Poi 的简介很是的少,接下来咱们简单说一些和Excel相关的常识spa
经过 office Excel软件或者 wps 经常使用的Excel格式有两种:xls 和 xlsx
3d![]()
上图中的两个文件都是Excel文件,在一个Excel文件中包含若干张表
![]()
一张表中能够分为不少行 row ,每行又分为不少单元格 cell
![]()
刚才简单的说过了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 |
要导出的实体类 以下:
![]()
image.png
<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>
复制代码
/**
* 导出数据
*/
@Test
public 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文件以下
/**
* 文件导入 实际上就是文件导出反向操做
*/
@Test
public 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实战开发经验。