Java实战:轻松实现Excel数据导入MySQL数据库

java怎么把excel导入到mysql

时间:2025-06-11 10:41


Java实现Excel数据导入MySQL的详解 在数据处理和分析领域,Excel和MySQL是两个不可或缺的工具

    Excel以其直观的操作界面和强大的数据计算能力,成为数据记录和初步分析的首选;而MySQL则以其高性能、可靠性和可扩展性,在数据存储和管理方面表现出色

    将Excel中的数据导入MySQL,可以实现数据的进一步分析和高效管理

    本文将详细介绍如何使用Java编程技术,将Excel数据有效地导入到MySQL数据库中

     一、前期准备 1. 环境配置 首先,确保开发环境已经配置好以下组件: - Java Development Kit (JDK):Java开发的基础工具包,用于编译和运行Java程序

     - MySQL数据库:确保MySQL服务已运行,并创建一个用于存储Excel数据的数据库和表

     - Apache POI库:一个流行的Java库,用于处理Microsoft Office格式的文件,包括Excel

     - MySQL Connector/J:Java与MySQL之间的连接驱动,用于实现Java程序与MySQL数据库的连接和数据交互

     这些组件可以通过Maven或直接下载jar文件的方式引入

    以下是Maven依赖项的示例: org.apache.poi poi 5.2.2 org.apache.poi poi-ooxml 5.2.2 mysql mysql-connector-java 8.0.32 2. 理解Excel数据结构 在导入数据之前,需要理解Excel文件的数据结构

    Excel文件由工作表组成,每个工作表包含行和列的网格,数据存储在单元格中

    需要关注数据区域的起始和结束行、列,以及单元格的数据类型(如文本、数值、日期等),因为这些信息将决定数据导入的细节

     二、实现步骤 1. 连接到MySQL数据库 使用JDBC(Java数据库连接)API连接到MySQL数据库

    首先需要设置数据库连接的URL、用户名和密码

     private static final String URL = jdbc:mysql://localhost:3306/your_database; private static final String USER = your_username; private static final String PASSWORD = your_password; 然后,使用`DriverManager.getConnection`方法建立连接

     Connection connection = DriverManager.getConnection(URL, USER,PASSWORD); connection.setAutoCommit(false); // 关闭自动提交,以便后续进行批量插入操作 2. 读取Excel文件 使用Apache POI库读取Excel文件中的数据

    根据文件的格式(.xlsx或.xls),选择适当的类(`XSSFWorkbook`或`HSSFWorkbook`)来打开文件

     String excelFilePath = data.xlsx; // Excel文件路径 FileInputStream file = newFileInputStream(new File(excelFilePath)); Workbook workbook = new XSSFWorkbook(file); Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 遍历工作表和行,访问单元格中的数据

    根据数据类型使用不同的方法读取数据,如`getStringCellValue`用于文本数据,`getNumericCellValue`用于数值数据

     for (Row row : sheet) { if(row.getRowNum() == continue; // 跳过表头 String column1 = row.getCell(0).getStringCellValue(); String column2 = row.getCell(1).getStringCellValue(); // ... 处理其他单元格数据 } 3. 将数据插入MySQL数据库 使用JDBC的`PreparedStatement`接口构建SQL插入语句,并将Excel数据逐行插入到MySQL表中

     String sql = INSERT INTOyour_table (column1, columnVALUES (?,?); PreparedStatement preparedStatement = connection.prepareStatement(sql); 通过`setXXX`方法将每个单元格的值设置为SQL语句的参数值

    这里XXX表示数据类型,如`setString`、`setInt`等

     for (Row row : sheet) { if(row.getRowNum() == continue; // 跳过表头 String column1 = row.getCell(0).getStringCellValue(); String column2 = row.getCell(1).getStringCellValue(); preparedStatement.setString(1, column1); preparedStatement.setString(2, column2); preparedStatement.addBatch(); // 添加到批量操作 } 执行批量插入操作,并提交事务

     preparedStatement.executeBatch(); connection.commit(); 4. 关闭连接和资源 最后,关闭`PreparedStatement`和`Connection`对象,以及Excel文件资源

     workbook.close(); if (preparedStatement!= null) preparedStatement.close(); if (connection !=null) connection.close(); 三、完整示例代码 以下是将Excel表格数据插入MySQL的完整示例代码: import org.apache.poi.ss.usermodel.; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class ExcelToMySQL { private static final String URL = jdbc:mysql://localhost:3306/your_database; private static final String USER = your_username; private static final String PASSWORD = your_password; public static voidmain(String【】args){ String excelFilePath = data.xlsx; // Excel文件路径 loadExcelDataToMySQL(excelFilePath); } private static void loadExcelDataToMySQL(String excelFilePath) { Connection connection = null; PreparedStatement preparedStatement = null; try{ // 连接到数据库 connection = DriverManager.getConnection(URL, USER,PASSWORD); connection.setAutoCommit(false); // 读取Excel文件 FileInputStream file = new FileInputStream(newFile(excelFile