处理不同excel表格将表格数据通过SpringBoot代码导入到数据库中通用工具类·
时间: 2024-10-27 07:05:27 浏览: 32
SpringBoot使用EasyPoi将Mysql数据库中的数据导入到Excel文件中并把Excel文件中的数据导入到Mysql数据库中
处理Excel表格并将数据导入到Spring Boot应用中的数据库,通常会使用一些开源库如Apache POI、JasperReports或者GreenDAO等。这里我们可以创建一个通用工具类,步骤如下:
1. 引入依赖:首先,在Spring Boot项目的pom.xml文件中添加Apache POI的依赖,例如:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
```
2. 创建工具类:创建一个名为`ExcelDataHandler.java`的类,它包含读取Excel文件、解析数据以及保存到数据库的方法。示例代码可能如下所示:
```java
import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import java.io.File;
import java.sql.Connection;
public class ExcelDataHandler {
private final JdbcTemplate jdbcTemplate;
@Autowired
public ExcelDataHandler(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void importFromExcel(String filePath, String tableName) {
try ( FileInputStream fis = new FileInputStream(new File(filePath)) ) {
Workbook workbook = WorkbookFactory.create(fis);
Sheet sheet = workbook.getSheetAt(0); // 假设是第一张表
for (Row row : sheet) {
List<Object> rowData = new ArrayList<>();
for (Cell cell : row) {
rowData.add(cell.getCellType() == Cell.CELL_TYPE_STRING ? cell.getStringCellValue() :
cell.getCellType() == Cell.CELL_TYPE_NUMERIC ? cell.getNumericCellValue() : null);
}
insertDataIntoDatabase(tableName, rowData);
}
} catch (Exception e) {
log.error("Error reading Excel file", e);
}
}
private void insertDataIntoDatabase(String tableName, List<Object> rowData) {
String sql = "INSERT INTO " + tableName + " VALUES (?, ?, ...)";
jdbcTemplate.batchUpdate(sql, rowData.stream().toArray(Object[]::new));
}
}
```
在这个例子中,我们假设Excel的第一列对应于数据库表的字段,第二列开始存储数据。你需要根据实际的表结构调整SQL插入语句。
阅读全文