下面我将为你详细解释如何使用Java将Excel数据导入到数据库。整个过程可以分为以下几个步骤:
- 导入相关依赖库
要想使用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>
- 创建连接数据库的类和方法
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,以及登录数据库使用的用户名和密码。
- 解析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 中。
- 将数据插入到数据库中
现在我们已经成功地读取并解析了 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技术站