Java excel数据导入mysql的实现示例详解
背景
在项目中,我们常常需要将Excel表格中的数据导入到MySQL数据库中,这是一种常用的数据导入方式。本文将介绍如何使用Java将Excel中的数据导入到MySQL数据库中,并提供两个示例供大家参考。
第一步:导入Excel相关的依赖
本示例中,我们使用Apache POI来操作Excel文件。在Maven中添加以下依赖即可:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
第二步:创建Java类
我们先创建一个Java类,命名为ExcelToMysqlDemo
。该类中包含一个方法readExcel
,用于读取Excel文件中的数据并将其插入到MySQL数据库中。
package com.demo;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
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.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelToMysqlDemo {
private static String DRIVER = "com.mysql.cj.jdbc.Driver";
private static String URL = "jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
private static String USERNAME = "root";
private static String PASSWORD = "root";
public static void readExcel() {
try {
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "INSERT INTO student(name, age, sex) VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
FileInputStream fis = new FileInputStream(new File("student.xlsx"));
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
int rowNum = sheet.getLastRowNum();
for(int i = 1; i <= rowNum; i++) {
Row row = sheet.getRow(i);
String name = row.getCell(0).getStringCellValue();
int age = (int) row.getCell(1).getNumericCellValue();
String sex = row.getCell(2).getStringCellValue();
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setString(3, sex);
pstmt.executeUpdate();
}
pstmt.close();
conn.close();
workbook.close();
System.out.println("数据插入成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
该类中使用了MySQL的JDBC驱动来连接数据库,连接信息如下:
- URL:
jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
- USERNAME:
root
- PASSWORD:
root
其中,demo
是数据库名称,我们需要根据实际情况进行修改。
第三步:执行程序
在readExcel
方法中,我们将student.xlsx
文件中的数据读取出来并插入到MySQL数据库中。执行程序即可完成数据导入。具体执行方法如下:
public static void main(String[] args) {
ExcelToMysqlDemo.readExcel();
}
执行结果如下:
数据插入成功!
示例一:导入一个excel表格
我们首先创建一个简单的Excel表格,用于存储学生信息。表格格式如下:
姓名 | 年龄 | 性别 |
---|---|---|
张三 | 20 | 男 |
李四 | 21 | 女 |
王五 | 22 | 男 |
将该表格命名为student.xlsx
,并将其放置在项目根目录下。
然后,我们在MySQL数据库中创建一个名为demo
的数据库,并在该数据库中创建一个名为student
的表格,用于存储学生信息。表格格式如下:
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`sex` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
将上述Java代码加入到项目中,并执行main
方法即可完成数据导入。执行结果如下:
数据插入成功!
示例二:导入多个excel表格
如果我们需要导入多个Excel表格中的数据,该如何执行呢?我们可以将读取Excel数据和插入MySQL数据库的代码封装到一个方法中,然后使用一个循环遍历每个Excel表格,如下所示:
public static void readAllExcel() {
try {
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "INSERT INTO student(name, age, sex) VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
File folder = new File(".");
File[] files = folder.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".xlsx");
}
});
for(File file : files) {
FileInputStream fis = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
int rowNum = sheet.getLastRowNum();
for(int i = 1; i <= rowNum; i++) {
Row row = sheet.getRow(i);
String name = row.getCell(0).getStringCellValue();
int age = (int) row.getCell(1).getNumericCellValue();
String sex = row.getCell(2).getStringCellValue();
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setString(3, sex);
pstmt.executeUpdate();
}
workbook.close();
}
pstmt.close();
conn.close();
System.out.println("数据插入成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
在该方法中,我们使用File
类获取项目目录下所有的.xlsx
文件,然后对每个文件执行数据导入操作。
执行该方法即可完成所有Excel表格的数据导入。
总结
本文讲解了使用Java将Excel表格数据导入MySQL数据库的实现示例,并提供了两个示例供大家参考。通过本文的阅读,相信大家已经了解了相关的操作及代码实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java excel数据导入mysql的实现示例详解 - Python技术站