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从乱码文本中解析出正确的文本

    当我们从某些旧的应用程序,旧的数据库或旧的操作系统中获取文本数据时,会遇到乱码问题,这些文本数据看起来像是一些无意义的字符混合而成的一串。 使用Java从乱码文本中解析出正确的文本,需要以下几个步骤: 1.了解乱码的产生原因 乱码的产生原因一般有以下几个: 使用不同编码方式进行编码和解码; 编码方式被错误识别; 文件本身损坏或被篡改。 在解决乱码问题时,需要…

    Java 2023年5月20日
    00
  • Spring boot集成Kafka消息中间件代码实例

    下面我将详细讲解如何在Spring Boot项目中集成Kafka消息中间件,包括以下内容: 环境准备 Maven依赖配置 Kafka配置 生产者代码示例 消费者代码示例 环境准备 在开始之前,我们需要确保本地环境中已经安装好了以下软件: Java JDK 1.8或更高版本 Apache Kafka 2.1.0或更高版本 Maven依赖配置 在pom.xml文…

    Java 2023年5月20日
    00
  • Spring 注解

    @SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 @RequestMapping 提供路由信息,负责URL到Controller中的具体函数的映射。 @Respon…

    Java 2023年5月9日
    00
  • JAVA8 十大新特性详解

    JAVA8 十大新特性详解 1. Lambda表达式 Lambda表达式是JAVA8中最重要的特性之一,它为JAVA引入了类似于函数式编程语言的概念。它可创建实现函数式接口的匿名函数。Lambda表达式具有简洁、清晰和易于使用的优点。Lambda表达式可以替代所有的匿名内部类。 public class LambdaTest { public static …

    Java 2023年5月24日
    00
  • Servlet与JSP间的两种传值情况

    Servlet与JSP是JavaEE中常见的Web开发组件,二者通常需要交互传递数据才能实现复杂的业务逻辑。下面我将详细讲解Servlet与JSP间的两种传值情况: 1. 通过URL参数传值 通过URL参数传值是Servlet与JSP间最简单的一种传值方式,它将数据作为URL的一部分直接传递给接收方。例如,我们可以在Servlet中使用以下代码设置URL并跳…

    Java 2023年6月15日
    00
  • Java中String.format的使用方法总结

    Java中String.format的使用方法总结 作为Java程序员来说,我们用到String.format的场景很多,今天我们就来总结一下它的使用方法。 1. 格式化字符串 String.format方法可以用来格式化字符串。以下是一个简单的例子: String message = String.format("Hello, %s! Today…

    Java 2023年5月26日
    00
  • Java小程序计算圆周率代码

    Java小程序计算圆周率代码攻略 1. 程序说明 本程序使用Java语言编写,旨在计算圆周率的值。程序实现的原理是基于蒙特卡罗方法:即在一个正方形内部随机产生若干个点,通过这些点中落入正方形内的个数与总点数的比值来估算出圆周率的值。 2. 实现步骤 2.1 创建源文件 首先在Java IDE(如Eclipse、IntelliJ IDEA等)中创建一个Java…

    Java 2023年5月23日
    00
  • Struts2学习笔记(2)-路径问题解决

    Struts2学习笔记(2)-路径问题解决 在Struts2的开发中,路径问题是一个常见的问题。特别是在使用跳转动作的时候,如果没有正确设置路径,页面就会出现404错误或导航不到指定的页面。本文将分享两条常用的解决路径问题的方法,帮助您在Struts2的开发中避免类似的问题。 方法一:使用相对路径 在Struts2中,路径分为绝对路径和相对路径两种。相对路径…

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