EasyExcel来解析Excel文件(导入数据库)
1.具体实现及代码
使用EasyExcel来解析Excel文件并将内容插入数据库是一个很好的选择,因为EasyExcel具有高效、简单的特点。以下是一个使用EasyExcel和JDBC来完成这一任务的示例。
依赖
首先,确保你在项目中包含了EasyExcel和JDBC的相关依赖。以下是Maven依赖:
<dependencies>
<!-- EasyExcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.2.0</version> <!-- 请使用最新版本 -->
</dependency>
<!-- MySQL JDBC Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version> <!-- 请根据你的MySQL版本调整 -->
</dependency>
</dependencies>
示例代码
以下示例代码展示了如何使用EasyExcel读取Excel文件并将数据插入到MySQL数据库中。
定义数据模型
首先,定义一个类来表示Excel中的数据。
public class UserData {
private String name;
private Double age;
// Getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getAge() {
return age;
}
public void setAge(Double age) {
this.age = age;
}
}
读取Excel文件并插入数据库
接下来,编写代码来读取Excel文件并将数据插入到数据库中。
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.builder.ExcelReaderSheetBuilder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ExcelToDatabase {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/your_database";
private static final String USERNAME = "your_username";
private static final String PASSWORD = "your_password";
public static void main(String[] args) {
String excelFilePath = "path/to/your/excel/file.xlsx";
// 读取Excel文件
List<UserData> dataList = readExcel(excelFilePath);
// 插入数据库
insertIntoDatabase(dataList);
}
private static List<UserData> readExcel(String filePath) {
List<UserData> dataList = new ArrayList<>();
ExcelReaderBuilder readerBuilder = EasyExcel.read(filePath, UserData.class, new AnalysisEventListener<UserData>() {
@Override
public void invoke(UserData data, AnalysisContext context) {
dataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 解析完成后的操作
}
});
ExcelReaderSheetBuilder sheetBuilder = readerBuilder.sheet();
sheetBuilder.doRead();
return dataList;
}
private static void insertIntoDatabase(List<UserData> dataList) {
String sql = "INSERT INTO your_table (name, age) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD);
PreparedStatement statement = connection.prepareStatement(sql)) {
for (UserData data : dataList) {
statement.setString(1, data.getName());
statement.setDouble(2, data.getAge());
statement.addBatch();
}
statement.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.详细说明
1. 数据模型类`UserData`:这个类表示Excel中的每一行数据。根据你的Excel文件的结构,可以调整这个类。
2. 读取Excel文件:使用EasyExcel的`ExcelReaderBuilder`和`ExcelReaderSheetBuilder`来读取Excel文件。`AnalysisEventListener`用于逐行处理数据,并将数据存储到`dataList`中。
3. 插入数据库:使用JDBC连接到数据库,并使用`PreparedStatement`进行批量插入操作。通过`addBatch()`方法添加到批处理,最后执行`executeBatch()`。
注意事项
- 确保Excel文件路径和数据库连接信息正确。
- 根据实际Excel文件的结构和数据库表结构调整`UserData`类和SQL语句。
- 考虑异常处理和日志记录,以便在发生错误时能更容易地进行调试。
通过上述步骤,你可以使用EasyExcel高效地读取Excel文件并将其内容插入到数据库中。如果需要更多的定制和错误处理,可以根据具体需求进行扩展。
更多推荐
所有评论(0)