Apache POI操作批量导入MySQL数据库
本教程将详细介绍如何使用Apache POI库来操作Excel文件,将Excel数据批量导入MySQL数据库中。通过本教程,您将学到以下内容:
- 导入Apache POI库
- 使用Apache POI读取Excel文件中的数据
- 连接MySQL数据库并进行数据插入
导入Apache POI库
首先,需要在项目中添加Apache POI库的依赖。可以通过以下方式完成:
- 在Maven项目中,在
pom.xml
文件中添加以下依赖:
<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>
- 在非Maven项目中,将下载的Apache POI库(
poi-x.x.x.jar
和poi-ooxml-x.x.x.jar
)放置在项目的classpath下。
使用Apache POI读取Excel文件中的数据
读取Excel文件数据的过程分为以下几步:
- 创建
FileInputStream
对象,将Excel文件以流的形式加载到内存中。 - 创建
Workbook
对象,根据读取的Excel文件的格式(xls或xlsx)创建对应的HSSFWorkbook
或XSSFWorkbook
对象。 - 获取
Sheet
对象,表示Excel文件中的一个工作表。 - 遍历
Sheet
对象中的每一行数据。 - 遍历每一行中的每一个单元格,获取单元格中存储的数据。
下面是示例代码:
import java.io.FileInputStream;
import java.io.IOException;
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 ExcelReader {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("data.xlsx"); // 加载Excel文件到流中
Workbook wb = new XSSFWorkbook(fis); // 创建XSSFWorkbook对象
Sheet sheet = wb.getSheetAt(0); // 获取第一个工作表
// 遍历每一行数据
for(Row row : sheet) {
// 遍历每一个单元格
for(Cell cell : row) {
// 获取单元格中的数据并进行处理
switch(cell.getCellTypeEnum()) {
case BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t");
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t");
break;
case STRING:
System.out.print(cell.getStringCellValue() + "\t");
break;
case FORMULA:
System.out.print(cell.getCellFormula() + "\t");
break;
default:
System.out.println();
}
}
System.out.println();
}
wb.close(); // 清理资源
fis.close();
}
}
连接MySQL数据库并进行数据插入
接下来,需要使用JDBC连接MySQL数据库,并将读取到的Excel数据插入到MySQL数据库的对应表中。下面是示例代码:
import java.io.FileInputStream;
import java.io.IOException;
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 ExcelReader {
public static void main(String[] args) throws IOException, SQLException {
FileInputStream fis = new FileInputStream("data.xlsx"); // 加载Excel文件到流中
Workbook wb = new XSSFWorkbook(fis); // 创建XSSFWorkbook对象
Sheet sheet = wb.getSheetAt(0); // 获取第一个工作表
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "password123";
Connection conn = DriverManager.getConnection(url, user, password); // 建立MySQL数据库连接
String insertSql = "INSERT INTO student(id, name, age, gender) VALUES(?, ?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(insertSql); // 创建PreparedStatement对象
// 遍历每一行数据
for(Row row : sheet) {
// 获取每一行中的每一个单元格中的数据
int id = (int) row.getCell(0).getNumericCellValue();
String name = row.getCell(1).getStringCellValue();
int age = (int) row.getCell(2).getNumericCellValue();
String gender = row.getCell(3).getStringCellValue();
// 设置PreparedStatement对象的参数
stmt.setInt(1, id);
stmt.setString(2, name);
stmt.setInt(3, age);
stmt.setString(4, gender);
// 执行插入操作
stmt.executeUpdate();
}
wb.close(); // 清理资源
fis.close();
stmt.close();
conn.close();
}
}
以上就是使用Apache POI操作批量导入MySQL数据库的完整攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Apache POI操作批量导入MySQL数据库 - Python技术站