Java如何将Excel数据导入到数据库

yizhihongxing

下面我将为你详细解释如何使用Java将Excel数据导入到数据库。整个过程可以分为以下几个步骤:

  1. 导入相关依赖库

要想使用Java将Excel数据导入到数据库,我们需要使用Apache的POI库来读取和解析Excel文件,以及使用数据库的JDBC驱动。因此需要在项目中导入以下两个依赖库:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

<dependency>
    <groupId>com.mysql.jdbc</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.24</version>
</dependency>
  1. 创建连接数据库的类和方法

Java中通常使用JDBC驱动来连接数据库。因此我们需要定义一个连接数据库的类,并在类中定义一个方法,用于建立连接。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/testdb";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "root";

    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName(DRIVER);
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            System.out.println("数据库连接成功");
        } catch (ClassNotFoundException e) {
            System.out.println("找不到驱动程序类,加载驱动失败!");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("数据库连接失败!");
            e.printStackTrace();
        }
        return conn;
    }
}

可以看到 getConnection() 方法通过 DriverManager 来建立和连接数据库,需要传入 JDBC URL,以及登录数据库使用的用户名和密码。

  1. 解析Excel文件

我们需要使用POI库中的API来读取和解析Excel文件。具体代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelReader {
    public static void main(String[] args) throws IOException {
        String excelFilePath = "C:/TEMP/book.xlsx";
        FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
        Sheet sheet = workbook.getSheetAt(0);
        Iterator<Row> iterator = sheet.iterator();
        while (iterator.hasNext()) {
            Row nextRow = iterator.next();
            Iterator<Cell> cellIterator = nextRow.cellIterator();
            List<String> rowValues = new ArrayList<>();
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                switch (cell.getCellType()) {
                    case STRING:
                        rowValues.add(cell.getStringCellValue().trim());
                        break;
                    case NUMERIC:
                        rowValues.add(String.valueOf(cell.getNumericCellValue()).trim());
                        break;
                    default:
                        rowValues.add("");
                        break;
                }
            }
            System.out.println(rowValues);
        }
        workbook.close();
        inputStream.close();
    }
}

这段代码使用了FileInputStream类读取 Excel 文件进行解析,并将解析好的结果存储在一个 List 中。

  1. 将数据插入到数据库中

现在我们已经成功地读取并解析了 Excel 文件了,接下来是将数据插入到数据库中的步骤。下面展示一段将Excel数据插入MySQL的示例代码。

public class ExcelReader {
    public static void main(String[] args) throws IOException {
        String excelFilePath = "C:/TEMP/book.xlsx";
        FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
        Sheet sheet = workbook.getSheetAt(0);
        Iterator<Row> iterator = sheet.iterator();
        while (iterator.hasNext()) {
            Row nextRow = iterator.next();
            Iterator<Cell> cellIterator = nextRow.cellIterator();
            List<String> rowValues = new ArrayList<>();
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                switch (cell.getCellType()) {
                    case STRING:
                        rowValues.add(cell.getStringCellValue().trim());
                        break;
                    case NUMERIC:
                        rowValues.add(String.valueOf(cell.getNumericCellValue()).trim());
                        break;
                    default:
                        rowValues.add("");
                        break;
                }
            }
            System.out.println(rowValues);

            String sql = "INSERT INTO employee (id,name,age,address,salary) " 
                    + "VALUES ('" + rowValues.get(0) + "','" + rowValues.get(1) + "','" + rowValues.get(2) + "','" + rowValues.get(3) + "','" + rowValues.get(4) + "')";

            Connection conn = DBConnection.getConnection();
            Statement statement = null;

            try {
                statement = conn.createStatement();
                statement.executeUpdate(sql);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (statement != null) {
                        statement.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        workbook.close();
        inputStream.close();
    }
}

可以看到,我们再次使用迭代器来遍历 Excel 的数据,并在循环内部构建插入 SQL 语句。最后,使用 JDBC 的 Statement 对象来将数据插入到数据库中。

这里仅提供了一种将 Excel 数据导入到数据库的示例代码,实际上很多细节需要你自己去处理,如数据类型转换、数据校验、异常处理等等。希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java如何将Excel数据导入到数据库 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • sourceTree合并一次提交的内容

    sourceTree合并一次提交的内容 在基于git的开发中,经常遇到不同分支需要合并某一次特定的提交的代码,而不是合并整个代码。 场景:A分支是通用分支,B分支是私有化分支,现在A分支修改了一个通用的功能,需要合并到B分支上,功能在一次提交上。B分支只需要这次提交的代码,对A分支上改动的其他代码都不感兴趣。对此,常规的merge已经不能满足我们的需求。 1…

    Java 2023年4月27日
    00
  • Java函数式编程(三):列表的转化

    Java函数式编程(三):列表的转化指的是如何使用函数式编程的思想来对列表进行转化操作。常见的列表转化操作有过滤、映射、归约等。下面是本文的完整攻略。 1. 列表的创建 在进行列表转化之前,我们首先需要了解如何创建一个Java列表。Java中列表的创建可以使用Java集合框架中的ArrayList类。可以通过以下方法进行创建: List<Integer…

    Java 2023年5月26日
    00
  • 用java实现扫雷游戏

    实现扫雷游戏,需要以下步骤: 第一步:准备工作 创建项目并添加所需的依赖包。可以使用Maven或Gradle构建工具来管理项目依赖。 第二步:创建游戏界面 使用Java的图形用户界面(GUI)工具包,如Swing或JavaFX,创建游戏界面。界面应该有菜单栏和工具栏,显示游戏区域的面板,以及状态栏等组件。 第三步:初始化游戏 在游戏开始时,需要初始化游戏数据…

    Java 2023年5月18日
    00
  • java实现Floyd算法

    Java实现Floyd算法 Floyd算法是解决图中最短路问题的一种经典算法,它可以求出图中任意两点之间的最短路径。下面我们将详细讲解如何使用Java实现Floyd算法。 算法思路 Floyd算法是一种动态规划算法,它通过逐步优化不同的路径来求取图中任意两点之间的最短路径。 我们可以用一个二维数组dis来存储图中任意两点之间的距离。具体地,dis[i][j]…

    Java 2023年5月18日
    00
  • java实现简单聊天软件

    Java实现简单聊天软件可以分为以下几个步骤: 1. 确定协议 聊天软件需要一套协议来规定客户端和服务器之间的通信方式。常用的协议有TCP和UDP。TCP协议传输可靠,但是速度慢,而UDP协议则速度快但是不可靠。在选择协议的时候,应该根据具体的需求来决定。在本例中,我们选择使用TCP协议。 2. 编写服务器端 服务器端需要监听指定的端口,等待客户端连接。当接…

    Java 2023年5月19日
    00
  • Java spring单点登录系统

    Java Spring 单点登录系统攻略 简介 Java Spring单点登录系统是基于Spring框架实现的一种用户认证方式,它允许一个用户在多个应用系统中使用同一个身份验证凭证(例如用户名和密码)进行登录认证,从而实现了多个应用系统中的用户身份认证问题。 系统架构 该系统由三个部分组成:认证中心、客户端和数据库 认证中心:负责接收客户端发送的登录请求,验…

    Java 2023年5月20日
    00
  • Java如何实现数字逆序

    当我们需要将一个整数的数位逆序后输出时,我们可以使用Java语言实现该功能,具体实现方法如下: 步骤一:将整数转换为字符串 首先,我们需要将整数转换为字符串类型,以便于我们对其进行操作。Java中,可以使用toString()方法将整数转换为字符串,示例如下: int num = 12345; String strNum = Integer.toString…

    Java 2023年5月26日
    00
  • Nodejs 中文分词常用模块用法分析

    Nodejs 中文分词常用模块用法分析 中文分词一直是自然语言处理领域的重要研究方向,而Nodejs提供了诸多中文分词模块便于使用。本文将详细介绍常用的中文分词模块并给出示例说明。 分词模块介绍 本节将介绍目前比较流行的中文分词模块,包括: nodejieba segment node-segment nodejieba nodejieba是依据结巴分词算法…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部