随着互联网的发展和大数据的兴起,数据的处理和管理成为了企业和个人不可或缺的能力。其中,将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数据库中。
相关问题拓展阅读:
- 如何用java导入Excel数据到数据库
如何用java导入Excel数据到数据库
你是怎么样用JAVA从EXCEL中取得数据不了解?
导入数据库,就是从EXCEL中取得数据,
然后生成INSERT语句,向数据库中插入数据。
参考下面代码:
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class WriteExcel {
WritableWorkbook book=null;
public void OutputExcel(ArrayList arlist,String Path){
try{
book = Workbook.createWorkbook(new File(Path));
//设置表名
WritableSheet sheet = book.createSheet(“考试单”,0);
//生成表格题头
Label labe1 = new Label(0, 0, “考生姓名” );
Label labe2 = new Label(1, 0, “地区”);
Label labe3 = new Label(2, 0, “所属院校”);
Label labe4 = new Label(3, 0, “班级”);
Label labe5 = new Label(4, 0, “考试号”);
Label labe6 = new Label(5, 0, “考试时间”);
Label labe7 = new Label(6, 0, “科目名称”);
//将生成的单元格添加到工作表中
sheet.addCell(labe1);
sheet.addCell(labe2);
sheet.addCell(labe3);
sheet.addCell(labe4);
sheet.addCell(labe5);
sheet.addCell(labe6);
sheet.addCell(labe7);
Iterator it = arlist.iterator();
int i = 1;
while(it.hasNext()){
//通过迭代获得arlist里的MarkesData对象
MarkesData temp = (MarkesData)it.next();
//取得数据生成单元格
Label label1=new Label(0,i,temp.getUser_name());
Label label2=new Label(1,i,temp.getArea_name());
Label label3=new Label(2,i,temp.getCollege_name());
Label label4=new Label(3,i,temp.getClass_name());
Label label5=new Label(4,i,temp.getTest_name());
Label label6=new Label(5,i,temp.getStarttime());
Label label7=new Label(6,i,temp.getSubject_name());
//将生成的单元格添加到工作表中
sheet.addCell(label1);
sheet.addCell(label2);
sheet.addCell(label3);
sheet.addCell(label4);
sheet.addCell(label5);
sheet.addCell(label6);
sheet.addCell(label7);
i++;
}
book.write();
book.close();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try{
if(book!=null)book.close();
}catch(Exception e){
System.out.println(“exception when closing Connection in finally”);
System.out.println(e.getMessage().toString());
}
}
}
}
关于java excel 导入数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。