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

下面我将为你详细解释如何使用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日

相关文章

  • 详谈Java中net.sf.json包关于JSON与对象互转的坑

    讲解“详谈Java中net.sf.json包关于JSON与对象互转的坑”的完整攻略: 背景 JSON是一种轻量级的数据交换格式,以其简洁、易读、易解析的特点被广泛应用。而在Java中,开发者可使用net.sf.json包来轻松实现JSON与对象之间的互转。但在使用过程中,开发者需要注意一些注意事项,否则就会掉入JSON与对象互转的“坑”中。 坑点一:JSON…

    Java 2023年5月26日
    00
  • SpringBoot集成阿里巴巴Druid监控的示例代码

    下面是关于SpringBoot集成阿里巴巴Druid监控的示例代码的完整攻略。本文中包含以下内容: 什么是阿里巴巴Druid监控。 阿里巴巴Druid监控的优势与特点。 SpringBoot集成阿里巴巴Druid监控的步骤。 两个示例代码。 什么是阿里巴巴Druid监控 阿里巴巴Druid监控是一款对数据库进行监控的工具。它提供了丰富的监控数据和可视化界面,…

    Java 2023年5月20日
    00
  • java冒泡排序算法代码

    下面是完整的讲解“Java冒泡排序算法代码”的攻略。 什么是冒泡排序算法? 冒泡排序算法是一种基础的排序算法,在数组中进行排序操作时用得比较多。其原理为遍历数组中的所有元素,不断比较相邻的两个元素,如果它们的顺序不正确,就进行交换,这样一轮遍历会使得最大(或最小)的元素“冒泡”到最后面,接着再次进行遍历,直到所有元素都排好序。 冒泡排序算法的代码实现 下面我…

    Java 2023年5月19日
    00
  • 基于Spring Security的Oauth2授权实现方法

    下面是详细讲解“基于Spring Security的Oauth2授权实现方法”的完整攻略。 什么是OAuth2 OAuth2是一个授权协议,可以使用户在第三方应用中提供安全的访问API和资源,而无需将用户凭证(例如,用户名和密码)直接提供给第三方应用。 OAuth2的流程通常包括以下步骤: 第三方应用向资源服务器申请访问API的授权; 资源服务器向用户询问授…

    Java 2023年5月20日
    00
  • 用java生成html文件实现原理及代码

    生成HTML文件的实现原理: 要实现用Java程序生成HTML文件,需要使用Java IO和字符串操作技术。生成HTML文件的步骤如下: 创建一个文本文件,并给定后缀名为“.html”; 在文件中编写HTML代码; 使用Java IO将HTML代码写入到创建的文本文件中; Java代码示例1: import java.io.FileWriter; impor…

    Java 2023年5月26日
    00
  • Java中List的使用方法简单介绍

    让我根据题目的要求给大家介绍一下Java中List的使用方法。 什么是List List是Java中一个常用的接口,它继承于Collection接口,表示一个有序(即列表)、可重复的元素集合。List中的每个元素都有其唯一的索引值,能够通过索引值来访问和修改元素。 List接口是一个泛型接口,可以定义存储不同类型元素的List集合。常见的List实现类有Ar…

    Java 2023年5月26日
    00
  • Java实现插入排序算法可视化的示例代码

    下面详细讲解Java实现插入排序算法可视化的示例代码的完整攻略。 1. 插入排序算法 插入排序是一种简单的排序算法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。插入排序的具体实现方式有两种:直接插入排序和二分插入排序。 以下是Java实现直接插入排序算法的示例代码: public void insertionS…

    Java 2023年5月19日
    00
  • Java JVM原理与调优_动力节点Java学院整理

    Java JVM原理与调优攻略 什么是JVM JVM(Java Virtual Machine)是Java虚拟机的英文缩写,其是Java语言的核心,可运行Java字节码。Java字节码在编译Java源代码时自动生成,可在跨平台的环境下执行。JVM是一个虚拟的计算机,它有自己的指令集,称为字节码(Bytecode),程序在运行时被翻译成特定平台的机器语言执行。…

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