SpringBoot中使用POI,快速实现Excel导入导出
本文是vhr系列的第十一篇,vhr项目地址https://github.com/lenve/vhr
导出Excel
整体来说,Excel有
.xls和
.xlsx,那么在POI中这两个也对应两个不同的类,但是类名不同,方法基本都是一致的,因此我这里将只介绍
.xls一种。
整体来说,可以分为如下七个步骤:
1.创建Excel文档
HSSFWorkbook workbook = new HSSFWorkbook();[/code]
2.设置文档的基本信息,这一步是可选的
//获取文档信息,并配置 DocumentSummaryInformation dsi = workbook.getDocumentSummaryInformation(); //文档类别 dsi.setCategory("员工信息"); //设置文档管理员 dsi.setManager("江南一点雨"); //设置组织机构 dsi.setCompany("XXX集团"); //获取摘要信息并配置 SummaryInformation si = workbook.getSummaryInformation(); //设置文档主题 si.setSubject("员工信息表"); //设置文档标题 si.setTitle("员工信息"); //设置文档作者 si.setAuthor("XXX集团"); //设置文档备注 si.setComments("备注信息暂无");[/code]
这些信息将显示在详细信息窗格中:
3.创建一个Excel表单,参数为sheet的名字
HSSFSheet sheet = workbook.createSheet("XXX集团员工信息表");[/code]
4.创建一行
HSSFRow headerRow = sheet.createRow(0);[/code]
0表示第一行。
5.在第一行中创建第一个单元格,并设置数据
HSSFCell cell0 = headerRow.createCell(0); cell0.setCellValue("编号");[/code]
6.将Excel写到ByteArrayOutputStream中
baos = new ByteArrayOutputStream(); workbook.write(baos);[/code]
7.创建ResponseEntity并返回
return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED);[/code]
核心步骤就这七个步骤,当然还有其他设置单元格数据格式、单元格背景、单元格宽度等,大家可以在源码中研究,这里就不赘述了。
导入Excel数据
数据导入主要涉及三个步骤 1.文件上传;2.Excel解析;3.数据插入。 第三步就比较简单了,我们这里重点来看看前两个步骤。
文件上传
文件上传采用了ElementUI中的Upload控件,如下:
<el-upload :show-file-list="false" accept="application/vnd.ms-excel" action="/emp/basic/importEmp" :on-success="fileUploadSuccess" :on-error="fileUploadError" :disabled="fileUploadBtnText=='正在导入'" :before-upload="beforeFileUpload" style="display: inline"> <el-button size="mini" type="success" :loading="fileUploadBtnText=='正在导入'"><i class="fa fa-lg fa-level-up" style="margin-right: 5px"></i>{{fileUploadBtnText}} </el-button> </el-upload>[/code]
正在上传时,文件上传控件不可用,上传成功或者失败之后才可用,上传过程中,上传按钮会有loading显示。
然后在SpringMVC中接收上传文件即可:
@RequestMapping(value = "/importEmp", method = RequestMethod.POST) public RespBean importEmp(MultipartFile file) { //... }[/code]
Excel解析
将上传到的MultipartFile转为输入流,然后交给POI去解析即可。可以分为如下四个步骤:
1.创建HSSFWorkbook对象
HSSFWorkbook workbook = new HSSFWorkbook(new POIFSFileSystem(file.getInputStream()));[/code]
2.获取一共有多少sheet,然后遍历
int numberOfSheets = workbook.getNumberOfSheets(); for (int i = 0; i < numberOfSheets; i++) { HSSFSheet sheet = workbook.getSheetAt(i); //... }[/code]
3.获取sheet中一共有多少行,遍历行(注意第一行是标题)
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows(); Employee employee; for (int j = 0; j < physicalNumberOfRows; j++) { if (j == 0) { continue;//标题行 } //... }[/code]
4.获取每一行有多少单元格,遍历单元格
int physicalNumberOfCells = row.getPhysicalNumberOfCells(); employee = new Employee(); for (int k = 0; k < physicalNumberOfCells; k++) { HSSFCell cell = row.getCell(k); //... }[/code]
单元格的遍历就比较简单了,将遍历到的数据放入Employee实例中,每遍历一行,就将一个employee实例放入集合中。
好了,大致的步骤就是这样,详细信息小伙伴可以star微人事的源码仔细研究。
本系列其他文章:
1.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)
2.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(二)
3.SpringSecurity中密码加盐与SpringBoot中异常统一处理
4.axios请求封装和异常统一处理
5.权限管理模块中动态加载Vue组件
6.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(六)
7.vhr部门管理数据库设计与编程
8.使用MyBatis轻松实现递归查询与存储过程调用
9.ElementUI中tree控件踩坑记
10.SpringBoot中自定义参数绑定
- 点赞
- 收藏
- 分享
- 文章举报

- SpringBoot中使用POI,快速实现Excel导入导出
- SpringBoot中使用POI,快速实现Excel导入导出
- SpringBoot中使用POI,快速实现Excel导入导出
- springboot使用 poi 导入导出Excel工具类
- Spring使用POI实现Excel导入导出
- Springboot中poi导入导出Excel的使用
- Spring使用POI实现Excel导入导出
- Spring使用POI实现Excel导入导出
- SpringMVC/SpringBoot使用easypoi实现Excel文件导入导出功能实现
- 记 springmvc使用POI,快速实现Excel导入导出
- Springboot+Poi实现Excel的导入导出
- 在SSM下使用POI实现Excel表的导入/导出
- [置顶] 【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(一)
- 【springboot+easypoi】一行代码搞定excel导入导出
- 使用POI实现在java程序中导入导出Excel文件数据
- Springboot/SpringMVC+POI 实现Excel导出功能(点击下载方式实现)
- springboot 使用poi导出excel文件,及注意项
- SpringBoot通过easypoi实现Excel的导入导出
- Jeesite(SpringBoot)采用poi实现从数据库提取数据导出为Excel,巨详细!!
- 使用apache的poi实现导入导出excel