使用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数据库中。

相关问题拓展阅读:

  • 如何用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 导入数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《使用Java将Excel数据导入数据库 (java excel 导入数据库)》
文章链接:https://zhuji.vsping.com/133971.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。