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

GitHub 加速计划 / ea / easyexcel
31.64 K
7.47 K
下载
快速、简洁、解决大文件内存溢出的java处理Excel工具
最近提交(Master分支:3 个月前 )
c42183df Bugfix 3 个月前
efa7dff6 * 重新加回 `commons-io` 3 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐