使用Java将Excel数据导入数据库 (java excel 导入数据库)
随着互联网的发展和大数据的兴起,数据的处理和管理成为了企业和个人不可或缺的能力。其中,将Excel表格中的数据导入数据库是一种常见的数据处理方式。本文将介绍如何利用Java语言将Excel中的数据导入到MySQL数据库中。
一、环境配置
在进行Excel数据导入之前,需要先准备好相应的环境。我们需要从官网上下载JDBC驱动程序,并将其加入Java项目中;同时,我们还需要依赖POI库来读取Excel文件。
二、读取Excel文件
Java中读取Excel文件的方式有很多,本文将介绍一种基于Apache POI的读取方式。
1.导入POI库:
“`
org.apache.poi
poi
4.1.2
org.apache.poi
poi-ooxml
4.1.2
“`
2.代码实现:
“`
public static void readExcel(String filePath) throws IOException {
// 创建 Excel 文件的输入流对象
FileInputStream excelFile = new FileInputStream(new File(filePath));
Workbook workbook = null;
// 根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象
if (filePath.endsWith(“xls”)) {
workbook = new HSSFWorkbook(excelFile);
} else if (filePath.endsWith(“xlsx”)) {
workbook = new XSSFWorkbook(excelFile);
}
// 获得之一个sheet的内容
Sheet sheet = workbook.getSheetAt(0);
// 获得sheet中的所有行
Iterator rows = sheet.iterator();
// 遍历所有行
while (rows.hasNext()) {
Row row = rows.next();
// 获得当前行的所有列
Iterator cells = row.iterator();
while (cells.hasNext()) {
Cell cell = cells.next();
// 根据单元格的类型读取相应的数据
switch (cell.getCellType()) {
case STRING:
System.out.print(cell.getStringCellValue() + “\t”);
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + “\t”);
break;
case BOOLEAN:
System.out.print(cell.getBooleanCellValue() + “\t”);
break;
default:
break;
}
}
System.out.println();
}
excelFile.close();
}
“`
通过上述代码实现,我们可以将Excel文件中的内容读取出来,并输出到控制台中,也可以将其保存到数据库中。
三、连接数据库
数据导入的前提是需要在Java程序中连接上MySQL数据库。连接流程大致为:加载数据库驱动程序,创建连接,关闭连接。其中,需要在Java项目中引入外部的MySQL数据库驱动jar包,MySQL Connector/J是使用最广泛的JDBC驱动。
1.导入MySQL Connector/J库:
“`
mysql
mysql-connector-java
8.0.26
“`
2.代码实现:
“`
public static Connection getConnection() {
String driver = “com.mysql.cj.jdbc.Driver”;
String url = “jdbc:mysql://localhost:3306/test”;
String username = “root”;
String password = “123456”;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
if(conn!=null){
System.out.println(“连接成功!”);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
“`
通过上述代码实现,我们可以连接上MySQL数据库并输出连接成功的信息。
四、数据导入
连接上数据库之后,我们需要将Excel文件中的数据逐条插入到数据库中。
1.编写插入语句:
“`
String sql = “INSERT INTO student (id, name, age, sex) VALUES (?, ?, ?, ?)”;
“`
2.将Excel文件中的数据插入到数据库中:
“`
public static void insertData() throws IOException, SQLException {
Connection conn = getConnection();
String filePath = “C:/Users/Administrator/Desktop/student.xlsx”;
FileInputStream excelFile = new FileInputStream(new File(filePath));
Workbook workbook = null;
if (filePath.endsWith(“xls”)) {
workbook = new HSSFWorkbook(excelFile);
} else if (filePath.endsWith(“xlsx”)) {
workbook = new XSSFWorkbook(excelFile);
}
Sheet sheet = workbook.getSheetAt(0);
Iterator rows = sheet.iterator();
while (rows.hasNext()) {
Row row = rows.next();
Iterator cells = row.iterator();
PreparedStatement pstmt = conn.prepareStatement(sql);
while (cells.hasNext()) {
Cell cell = cells.next();
switch (cell.getCellType()) {
case STRING:
pstmt.setString(1, cell.getStringCellValue());
pstmt.setString(2, cell.getStringCellValue());
pstmt.setString(4, cell.getStringCellValue());
break;
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
pstmt.setDate(3, new java.sql.Date(cell.getDateCellValue().getTime()));
} else {
pstmt.setInt(1, (int) cell.getNumericCellValue());
pstmt.setInt(3, (int) cell.getNumericCellValue());
}
break;
default:
break;
}
}
pstmt.executeUpdate();
System.out.println(“插入成功!”);
}
excelFile.close();
conn.close();
}
“`
通过上述代码实现,我们可以将Excel文件中的数据插入到MySQL数据库中。