首页 >excel操作 > 内容

SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)

2023年8月14日 21:30

图片

有天上飞的概念,就要有落地的实现

  • 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍

  • 先赞后看,养成习惯

来源:Springboot使用POI实现导出Excel文件示例的搜索结果-阿里云开发者社区

SpringBoot 图文教程系列文章目录

  1. SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」

  2. SpringBoot图文教程2—日志的使用「logback」「log4j」

  3. SpringBoot图文教程3—「‘初恋’情结」集成Jsp

  4. SpringBoot图文教程4—SpringBoot 实现文件上传下载

  5. SpringBoot图文教程5—SpringBoot 中使用Aop

  6. SpringBoot图文教程6—SpringBoot中过滤器的使用

  7. SpringBoot图文教程7—SpringBoot拦截器的使用姿势这都有

  8. SpringBoot图文教程8—SpringBoot集成MBG「代码生成器」

前言

Excel文件的导入导出功能,在项目中可以说是一个极其常见的功能了,使用到这技术的业务场景也非常多,例如:客户信息的导入导出,运营数据的导入导出,订单数据的导入导出等等。

那么在 SpringBoot 中如何使用 Poi 呢?从本文开始将会说三种使用 Poi 的姿势:Apache Poi,EasyPoi,阿里开源的EasyExcel。

话不多说,马上开始。

图片

集成 Poi

什么是 Poi

Apache Poi 是 Apache 的一个开源项目,用Java代码通过 poi 技术可以实现 读取 和 生成 Excel 文档。

关于 Poi 的简介非常的少,接下来我们简单说一些和Excel相关的常识

  1. 通过 office Excel软件或者 wps 常用的Excel格式有两种:xls 和 xlsx

    图片

  2. 上图中的两个文件都是Excel文件,在一个Excel文件中包含若干张表

    图片

  3. 一张表中可以分为很多行 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. 在测试类中写导出的代码如下:

/***导出数据*/@Testpublicvoidtest2()throwsIOException{//0.准备数据Useruser=newUser();user.setUserId(1);user.setUserName("hhhh");user.setUserSex("男");String[]titles={"编号","名字","性别"};/***先写入标题栏数据*///1.创建文件对象创建HSSFWorkbook只能够写出为xls格式的Excel//要写出xlsx需要创建为XSSFWorkbook两种Api基本使用方式一样HSSFWorkbookworkbook=newHSSFWorkbook();//2.创建表对象HSSFSheetsheet=workbook.createSheet("users");//3.创建标题栏(第一行)参数为行下标行下标从0开始HSSFRowtitleRow=sheet.createRow(0);//4.在标题栏中写入数据for(inti=0;i<titles.length;i++){//创建单元格HSSFCellcell=titleRow.createCell(i);cell.setCellValue(titles[i]);}/***写入用户数据*///5创建行如果是用户数据的集合需要遍历HSSFRowrow=sheet.createRow(1);//6将用户数据写入到行中row.createCell(0).setCellValue(user.getUserId());row.createCell(1).setCellValue(user.getUserName());row.createCell(2).setCellValue(user.getUserSex());//文件保存到本地参数为要写出的位置workbook.write(newFileOutputStream("/Users/k/Desktop/hhh.xls"));}

生成的Excel文件如下

图片

3. Excel导入

图片

/***文件导入实际上就是文件导出反向操作*/@Testpublicvoidtest3()throwsException{//1.通过流读取Excel文件FileInputStreaminputStream=newFileInputStream("/Users/k/Desktop/hhh.xls");//2.通过poi解析流HSSFWorkbook处理流得到的对象中就封装了Excel文件所有的数据HSSFWorkbookworkbook=newHSSFWorkbook(inputStream);//3.从文件中获取表对象getSheetAt通过下标获取HSSFSheetsheet=workbook.getSheetAt(0);//4.从表中获取到行数据从第二行开始到最后一行getLastRowNum()获取最后一行的下标intlastRowNum=sheet.getLastRowNum();for(inti=1;i<=lastRowNum;i++){//通过下标获取行HSSFRowrow=sheet.getRow(i);//从行中获取数据/***getNumericCellValue()获取数字*getStringCellValue获取String*/doubleid=row.getCell(0).getNumericCellValue();Stringname=row.getCell(1).getStringCellValue();Stringsex=row.getCell(2).getStringCellValue();//封装到对象中Useruser=newUser();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

图片


参考文章:https://blog.csdn.net/gb4215287/article/details/120287990

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论