Java把不同Excel表的信息存入数据库

在现实生活和工作中,我们经常需要处理不同来源的Excel表格数据,并将其存储到数据库中进行进一步的分析和处理。本文将介绍如何使用Java编程语言实现这一功能,以及提供一个基本的代码示例。

准备工作

在开始之前,我们需要准备一些必要的工具和库:

  1. Java开发环境(JDK)
  2. Apache POI库,用于处理Excel文件
  3. JDBC库,用于连接和操作数据库

你可以从官方网站下载并安装JDK,并使用Maven或Gradle等构建工具导入所需的库。

导入Excel数据

首先,我们需要从Excel文件中读取数据。Apache POI库提供了一种简单的方式来处理Excel文件。下面是一个示例代码,演示了如何从一个工作表中读取数据:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.InputStream;

public class ExcelReader {
    public static void main(String[] args) {
        try {
            // 打开Excel文件
            InputStream inputStream = new FileInputStream("path/to/excel.xlsx");
            
            // 创建工作簿对象
            Workbook workbook = new XSSFWorkbook(inputStream);
            
            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);
            
            // 遍历每一行
            for (Row row : sheet) {
                // 遍历每一列
                for (Cell cell : row) {
                    // 读取单元格数据
                    String value = cell.getStringCellValue();
                    System.out.print(value + "\t");
                }
                System.out.println();
            }
            
            // 关闭流和资源
            workbook.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用FileInputStream打开Excel文件,创建一个XSSFWorkbook对象来表示整个工作簿。然后,我们通过getSheetAt方法获取第一个工作表,并使用嵌套的循环遍历每一行和每一列。最后,在循环中,我们使用getStringCellValue方法读取单元格的值。

请注意,上述代码中的"path/to/excel.xlsx"应该替换为实际的Excel文件路径。

连接数据库

接下来,我们需要将从Excel读取的数据存储到数据库中。我们可以使用Java的JDBC库来连接和操作数据库。下面是一个示例代码,演示了如何连接到数据库并插入数据:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class DatabaseWriter {
    public static void main(String[] args) {
        try {
            // 连接数据库
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
            
            // 准备SQL语句
            String sql = "INSERT INTO mytable (column1, column2, column3) VALUES (?, ?, ?)";
            
            // 创建预编译语句对象
            PreparedStatement statement = connection.prepareStatement(sql);
            
            // 设置参数并执行语句
            statement.setString(1, "value1");
            statement.setString(2, "value2");
            statement.setString(3, "value3");
            statement.executeUpdate();
            
            // 关闭资源
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用DriverManager.getConnection方法连接到数据库。请将"jdbc:mysql://localhost:3306/mydatabase"替换为实际的数据库连接URL,"username""password"替换为数据库的用户名和密码。

然后,我们准备一个SQL语句,使用?作为占位符。创建一个预编译语句对象,并使用setString方法设置参数的值。最后,执行更新语句并关闭资源。

请注意,上述示例只插入了一行数据,你可以根据需要在循环中插入更多数据。

整合代码

现在,我们将上述两个示例代码整合到一个完整的程序中,以实现将Excel数据存储到数据库的功能:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql