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文件并将其内容插入到数据库中。如果需要更多的定制和错误处理,可以根据具体需求进行扩展。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guicai_guojia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值