Java后端前后端分离项目如何将Excel数据导入数据库引言
在前端和后端分离项目中,前端通常负责数据显示和用户交互,而后端负责数据处理和存储。有时,我们需要将从Excel表格中导出的数据导入到数据库中,以便进一步处理和分析。本文将介绍如何使用Java后端将Excel数据导入数据库,并提供示例代码。
问题描述假设我们的项目是学生信息管理系统,我们需要将学生信息数据从Excel表格导入数据库。Excel表格的结构如下:
我们需要将这些学生信息导入数据库的学生表,结构如下:
为了解决这个问题,我们可以使用Java的Apache POI库读取Excel文件,并使用JDBC连接数据库插入数据。以下是解决方案的步骤:
第一步:引入依赖首先,我们需要在项目中工作pom.xml
将Apachee引入文件 依赖POI和JDBC:
<dependencies> <!-- Apache POI --> <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> <!-- JDBC --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> </dependency></dependencies>
第二步:编写Java代码接下来,我们可以编写Java代码,将Excel数据导入数据库。首先,我们需要创建一个Student
类表示学生信息:
public class Student { private String name; private int age; private String gender; private String className; // 省略了结构方法、getter和setter方法
然后,我们可以写一个ExcelImporter
类读取Excel文件并将数据导入数据库:
import org.apache.poi.ss.usermodel.*;import java.io.FileInputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ExcelImporter { private static final String JDBC_URL = "jdbc:mysql://localhost:3306/mydb"; private static final String JDBC_USERNAME = "root"; private static final String JDBC_PASSWORD = "password"; public static void main(String[] args) { String excelFilePath = "path/to/excel/file.xlsx"; List<Student> students = readStudentsFromExcel(excelFilePath); insertStudentsIntoDatabase(students); } public static List<Student> readStudentsFromExcel(String filePath) { List<Student> students = new ArrayList<>(); try (FileInputStream fileInputStream = new FileInputStream(filePath); Workbook workbook = WorkbookFactory.create(fileInputStream)) { Sheet sheet = workbook.getSheetAt(0); // 假设学生信息在第一个sheet中 Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); if (row.getRowNum() == 0) { continue; // 跳过表头行 } Student student = new Student(); student.setName(row.getCell(0).getStringCellValue()); student.setAge((int) row.getCell(1).getNumericCellValue()); student.setGender(row.getCell(2).getStringCellValue()); student.setClassName(row.getCell(3).getStringCellValue()); students.add(student); } } catch (Exception e) { e.printStackTrace(); } return students; } public static void insertStudentsIntoDatabase(List<Student> students) { try (Connection connection = DriverManager.getConnection(JDBC_URL