Springboot+Poi导入Excel表格实现过程详解
Poi是一款Apache组织开源的Java开发工具包,是操作Microsoft Office格式文件的基础库。Springboot是一个基于Spring框架的快速开发框架,能够使开发者更加便捷地进行开发,实现高效开发过程。本文将介绍使用Springboot Poi导入Excel表格实现的过程,以便开发者能够更好地了解如何使用该技术。
一、环境准备
首先需要在项目中添加依赖,我们使用Maven项目的方式,添加以下依赖:
<dependencies>
<!-- Springboot Web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Poi依赖 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
</dependencies>
二、编写Controller层
@RestController
@RequestMapping("/excel")
public class ExcelController {
/**
* 导入Excel文件
*/
@PostMapping("/import")
public String importExcel(HttpServletRequest request) {
try {
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
MultipartFile file = multipartHttpServletRequest.getFile("file");
// 解析Excel文件
List<ExcelVO> dataList = readExcel(file);
// 保存数据到数据库
saveData(dataList);
return "success";
} catch (Exception ex) {
return "error";
}
}
/**
* 解析Excel文件
*/
private List<ExcelVO> readExcel(MultipartFile file) throws Exception {
Workbook workbook = WorkbookFactory.create(file.getInputStream());
Sheet sheet = workbook.getSheetAt(0);
List<ExcelVO> dataList = new ArrayList<>();
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
if (row == null) {
continue;
}
ExcelVO data = new ExcelVO();
data.setName(getValue(row.getCell(0)));
data.setAge(getValue(row.getCell(1)));
data.setSex(getValue(row.getCell(2)));
dataList.add(data);
}
return dataList;
}
/**
* 获取单元格内容(不同类型的单元格需要不同的处理方式)
*/
private String getValue(Cell cell) {
if (cell == null) {
return null;
}
if (cell.getCellTypeEnum() == CellType.STRING) {
return cell.getStringCellValue();
}
if (cell.getCellTypeEnum() == CellType.NUMERIC) {
return String.valueOf((int) cell.getNumericCellValue());
}
return null;
}
/**
* 数据保存到数据库
*/
private void saveData(List<ExcelVO> dataList) {
// ...
}
}
在该代码段中,我们编写了一个导入Excel文件的Controller,该Controller中定义了一个@PostMapping属于该Controller的方法,具体实现的功能就是读取上传的Excel文件,解析并将数据保存至数据库。
三、编写实体类
public class ExcelVO {
private String name; // 姓名
private String age; // 年龄
private String sex; // 性别
// getter和setter方法
}
在该代码段中,我们定义了一个ExcelVO实体类,该实体类的属性与导入Excel表格中的数据列相对应,方便我们将数据保存至数据库。
四、编写前端页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Excel导入</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="/excel/import">
<input type="file" name="file" />
<input type="submit" value="导入" />
</form>
</body>
</html>
在该代码段中,我们编写了一个简单的HTML页面,定义了一个上传文件的表单,方便用户上传Excel文件并提交导入请求。
五、运行效果
运行项目后,在浏览器中访问form表单页面,并选择一个Excel文件上传:

上传成功后,页面显示“success”表示导入成功:

至此,我们成功地完成了Springboot Poi导入Excel表格的实现过程。在实现过程中,我们使用了Springboot、Poi等技术,实现了将Excel表格数据批量导入数据库的功能,使开发者能够便捷地进行开发工作。
