spring导入excel到数据库的代码
时间: 2024-01-15 09:05:36 浏览: 27
可以使用Apache POI和Spring的JdbcTemplate来实现。首先,使用POI读取Excel文件中的数据,并将数据存储在List中。然后,使用JdbcTemplate将List中的数据批量插入数据库中。具体代码可以参考如下:
```
// 导入POI和Spring的相关包
import org.apache.poi.ss.usermodel.*;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
// 定义导入Excel的方法
public void importExcelToDb(String filePath, JdbcTemplate jdbcTemplate) throws Exception {
// 读取Excel文件
Workbook workbook = WorkbookFactory.create(new File(filePath));
Sheet sheet = workbook.getSheetAt(0);
// 定义List存储读取到的数据
List<Object[]> dataList = new ArrayList<Object[]>();
// 遍历Excel文件中的每一行数据
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
Object[] data = new Object[row.getLastCellNum()];
// 遍历每一列数据
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
// 根据单元格类型获取数据
switch (cell.getCellType()) {
case STRING:
data[j] = cell.getStringCellValue();
break;
case NUMERIC:
data[j] = cell.getNumericCellValue();
break;
case BOOLEAN:
data[j] = cell.getBooleanCellValue();
break;
default:
data[j] = null;
}
}
// 将每一行数据添加到List中
dataList.add(data);
}
// 将List中的数据批量插入数据库
String sql = "INSERT INTO table_name (column1, column2, ...) VALUES (?, ?, ...)";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
public void setValues(PreparedStatement ps, int i) throws SQLException {
Object[] data = dataList.get(i);
for (int j = 0; j < data.length; j++) {
ps.setObject(j+1, data[j]);
}
}
public int getBatchSize() {
return dataList.size();
}
});
}
```
需要注意的是,需要根据实际情况修改SQL语句中的表名和列名。另外,在调用该方法时需要提供Excel文件路径和JdbcTemplate对象。