springboot使用poi读取xlsx文件,并将数据存入mysql数据库,请写出示例代码以及代码注释
时间: 2024-02-20 22:56:19 浏览: 209
Springboot使用POI实现导出Excel文件示例
好的,下面是一个使用Spring Boot和POI读取xlsx文件,并将数据存入MySQL数据库的示例代码,附有详细注释:
首先,需要在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
```
接着,创建一个实体类,用于存储读取的数据。示例代码如下:
```java
public class Employee {
private String name;
private int age;
private String gender;
private String department;
// 省略getter和setter方法
}
```
然后,创建一个Service类,用于读取xlsx文件并将数据存入MySQL数据库。示例代码如下:
```java
@Service
public class EmployeeService {
@Autowired
private JdbcTemplate jdbcTemplate;
public void readExcelFile(String filePath) throws IOException {
// 创建一个输入流,读取Excel文件
FileInputStream inputStream = new FileInputStream(filePath);
// 创建一个Workbook对象,表示整个Excel文件
Workbook workbook = new XSSFWorkbook(inputStream);
// 获取第一个Sheet页
Sheet sheet = workbook.getSheetAt(0);
// 遍历Sheet页中的每一行数据
for (Row row : sheet) {
// 跳过第一行表头
if (row.getRowNum() == 0) {
continue;
}
// 创建一个Employee对象,用于存储当前行的数据
Employee employee = new Employee();
// 遍历当前行中的每一个单元格数据
for (Cell cell : row) {
switch (cell.getColumnIndex()) {
case 0:
employee.setName(cell.getStringCellValue());
break;
case 1:
employee.setAge((int) cell.getNumericCellValue());
break;
case 2:
employee.setGender(cell.getStringCellValue());
break;
case 3:
employee.setDepartment(cell.getStringCellValue());
break;
default:
break;
}
}
// 将Employee对象中的数据插入到MySQL数据库中
jdbcTemplate.update("INSERT INTO employee(name, age, gender, department) VALUES (?, ?, ?, ?)",
employee.getName(), employee.getAge(), employee.getGender(), employee.getDepartment());
}
// 关闭输入流和Workbook对象
inputStream.close();
workbook.close();
}
}
```
最后,创建一个Controller类,用于接收上传的xlsx文件并调用Service类的方法读取并存储数据。示例代码如下:
```java
@RestController
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@PostMapping("/upload")
public void uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
// 保存上传的文件到本地
String filePath = "D:/upload/" + file.getOriginalFilename();
file.transferTo(new File(filePath));
// 调用Service类的方法读取并存储数据
employeeService.readExcelFile(filePath);
}
}
```
以上就是一个使用Spring Boot和POI读取xlsx文件,并将数据存入MySQL数据库的示例代码。
阅读全文