java 遍历树形excel 插入数据库
时间: 2023-09-22 13:02:25 浏览: 119
在Java中遍历树形Excel并将数据插入到数据库可以使用Apache POI库来读取Excel文件,并使用递归的方式遍历树形结构。以下是一个简单的示例代码:
1. 首先,我们需要导入Apache POI库的依赖。可以在Maven项目中添加以下依赖项:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
```
2. 然后,我们可以编写一个方法来递归遍历树形Excel,并将数据插入数据库。假设Excel的每一行代表一个节点,其中包含节点的ID、名称和父节点的ID信息。
```java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ExcelToDatabase {
public static void main(String[] args) {
String excelFilePath = "path/to/excel.xlsx";
try {
FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
Workbook workbook = new XSSFWorkbook(inputStream);
// 获取根节点
Sheet sheet = workbook.getSheetAt(0);
Row rootRow = sheet.getRow(0);
// 连接数据库
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password");
PreparedStatement stmt = con.prepareStatement("INSERT INTO table_name (id, name, parent_id) VALUES (?, ?, ?)");
// 递归遍历树形结构并插入数据库
traverseTree(sheet, rootRow, 1, stmt);
stmt.close();
con.close();
workbook.close();
inputStream.close();
System.out.println("数据插入数据库成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void traverseTree(Sheet sheet, Row currentNode, int level, PreparedStatement stmt) throws SQLException {
if (currentNode != null) {
// 获取节点相关信息
int id = (int)currentNode.getCell(0).getNumericCellValue();
String name = currentNode.getCell(1).getStringCellValue();
int parentId = (int)currentNode.getCell(2).getNumericCellValue();
// 将节点信息插入数据库
stmt.setInt(1, id);
stmt.setString(2, name);
stmt.setInt(3, parentId);
stmt.executeUpdate();
// 遍历子节点
for (Row row : sheet) {
Cell cell = row.getCell(2); // 获取父节点ID所在的列
if (cell != null && cell.getCellType() == CellType.NUMERIC && (int)cell.getNumericCellValue() == id) {
traverseTree(sheet, row, level + 1, stmt);
}
}
}
}
}
```
在以上代码中,我们首先使用`FileInputStream`读取Excel文件,并使用`XSSFWorkbook`创建一个`Workbook`对象。然后,我们获取根节点所在的行,连接到数据库,并使用`PreparedStatement`预编译插入语句。接下来,我们通过递归方式遍历Excel中的每一行,将节点信息逐行插入到数据库。最后,关闭相关的资源,并输出插入成功的消息。
请注意,以上代码仅提供了一个简单的示例,具体的实现取决于Excel文件的结构和数据库的设计。你可能需要根据实际情况进行适当的修改和调整。
阅读全文