如何用Java编写代码来遍历Excel表格中的每个Sheet,然后将Sheet的内容逐个插入到数据库中?
时间: 2024-10-23 14:09:14 浏览: 16
在Java中,我们可以使用Apache POI库来处理Excel文件,包括读取Sheet内容,并使用JDBC连接数据库来插入数据。这里是一个简单的步骤说明:
1. **添加依赖**:
首先,需要在项目中引入Apache POI和JDBC驱动的相关依赖。例如,如果你使用Maven,可以在pom.xml中添加以下依赖:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.1.jre11</version>
</dependency>
```
2. **打开Excel文件**:
使用`XSSFWorkbook`加载Excel文件,它代表整个工作簿。
```java
FileInputStream fis = new FileInputStream("path_to_your_excel.xlsx");
Workbook workbook = new XSSFWorkbook(fis);
```
3. **遍历Sheets**:
使用`workbook.getSheetAt(index)`获取指定索引的Sheet,然后遍历每个Row。
```java
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
Sheet sheet = workbook.getSheetAt(i);
// 对于每个Sheet
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
// 处理行数据
}
}
```
4. **读取单元格数据**:
获取Row中的每个单元格(Cell),并处理其值。
```java
Cell cell;
for (Row row : sheet) {
for (int j = 0; j < row.getLastCellNum(); j++) {
cell = row.getCell(j);
String value = cell.getStringCellValue();
// 根据需要转换数据类型并插入数据库
}
}
```
5. **插入数据库**:
使用JDBC的PreparedStatement来避免SQL注入风险,并将数据插入相应的表。
```java
Connection conn = DriverManager.getConnection("jdbc:sqlserver://your_database_url", "username", "password");
String sql = "INSERT INTO your_table (column1, column2, ...) VALUES (?, ?, ...)";
PreparedStatement pstmt = conn.prepareStatement(sql);
try {
// 将读取的值设置到PreparedStatement
pstmt.setString(1, value);
// ...
pstmt.executeUpdate();
} finally {
pstmt.close();
conn.close();
}
```
6. **关闭资源**:
关闭流、Workbook和Connection。
记得替换上述代码中的路径、数据库连接信息以及具体的列名和表结构。此外,对于更复杂的Excel表格,可能还需要考虑异常处理和数据类型的适配。
阅读全文