使用Apache POI进行循环写入数据库操作 (apache poi循环写数据库)

在现代编程环境下,许多应用程序需要处理大量的数据。其中一种常见的应用程序是将Microsoft Excel电子表格中的数据插入到数据库中。在这种情况下,需要使用一种强大而易于使用的Java库来读取电子表格并将数据保存到数据库中。Apache POI是一种Java库,它提供了处理Microsoft Office文档的API。在本文中,我们将探讨如何。

步骤一:导入Apache POI库

在开始之前,必须首先导入Apache POI库。可以通过以下方式完成:

访问官方网站https://poi.apache.org/并下载所需的POI版本。在这里,我们将使用最新的版本4.1.2。

接下来,将下载的poi-4.1.2.jar文件从下载目录中复制到项目的lib目录下。

在项目的构建路径中添加poi-4.1.2.jar文件。可以通过右键单击项目并选择“Build Path”>“Configure Build Path”>“Libraries”>“Add JARs”来完成此操作。

步骤二:创建Excel表格

在开始之前,必须首先创建一个带有数据的Excel电子表格。在这里,我们将使用以下示例Excel电子表格中的数据:

| 姓名 | 年龄 | 性别 |

| —- | —- | —- |

| 张三 | 25 | 男 |

| 李四 | 30 | 女 |

| 王五 | 35 | 男 |

步骤三:创建Java类

在本示例中,我们将创建一个名为ExcelToDatabaseConverter的Java类。这个类将负责读取Excel电子表格中的数据并将其插入到数据库中。将以下代码添加到ExcelToDatabaseConverter.java文件中:

public class ExcelToDatabaseConverter {

public static void mn(String[] args) throws Exception {

String excelFilePath = “path/to/excelFile.xlsx”;

String url = “jdbc:mysql://localhost:3306/mydatabase”;

String username = “root”;

String password = “password”;

String sql = “INSERT INTO employee (name, age, gender) values (?, ?, ?)”;

PreparedStatement statement = null;

FileInputStream inputStream = null;

XSSFWorkbook workbook = null;

try {

inputStream = new FileInputStream(new File(excelFilePath));

workbook = new XSSFWorkbook(inputStream);

XSSFSheet sheet = workbook.getSheetAt(0);

Iterator rowIterator = sheet.iterator();

Class.forName(“com.mysql.jdbc.Driver”);

Connection connection = DriverManager.getConnection(url, username, password);

while (rowIterator.hasNext()) {

Row row = rowIterator.next();

statement = connection.prepareStatement(sql);

statement.setString(1, row.getCell(0).getStringCellValue());

statement.setInt(2, (int) row.getCell(1).getNumericCellValue());

statement.setString(3, row.getCell(2).getStringCellValue());

statement.executeUpdate();

}

System.out.println(“Data inserted successfully!”);

} catch(Exception e) {

e.printStackTrace();

} finally {

try {

statement.close();

connection.close();

workbook.close();

inputStream.close();

} catch(Exception e) {

e.printStackTrace();

}

}

}

}

现在,我们将逐行分析上述代码。

第1行:导入Java IO,Apache POI和Java SQL库。

第3-7行:指定Excel文件的路径,数据库的URL,用户名,密码以及插入数据的SQL查询字符串。

第9-12行:创建所需变量,以便稍后在代码中使用。

第14行:抛出异常以防止文件未找到或无法读取。

第16-17行:使用FileInputStream类从电子表格文件中获取输入流。

第18-19行:将输入流转换为XSSFWorkbook对象以便读取电子表格。

第20行:获取之一个工作表(从0开始)。

第21行:获取电子表格的行迭代器以便逐行读取数据。

第22行:注册MySQL JDBC驱动程序。

第23行:使用DriverManager.getConnection()方法创建一个连接对象。

第24-38行:逐行循环,为每一行创建PreparedStatement对象并使用PreparedStatement.executeUpdate()方法将数据插入到数据库中。

第39行:提示用户数据已成功插入数据库。

第41-44行:捕获任何异常并将其打印到控制台上。

第47-51行:使用try-catch-finally语句块关闭所有打开的对象。这样可以防止资源泄漏和内存泄漏。

步骤四:测试Java程序

现在,我们可以在本地测试代码并验证是否成功将Excel电子表格中的数据插入到数据库中。在Java代码中,执行ExcelToDatabaseConverter mn()方法即可。

# 程序执行成功

Data inserted successfully!

这意味着,在本例中,所有数据都已插入名为employee的MySQL数据库表中。

结论

相关问题拓展阅读:

  • 如何用Apache POI操作Excel文件
  • 如何用Apache POI操作Excel文件

如何用Apache POI操作Excel文件

1.读取表格

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.Iterator;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

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 Read {

 public Read(){

  

 }

 public static void start(String path) throws FileNotFoundException, IOException{

  Workbook book = getWorkBook(path);

  Sheet sheet = getSheets(book);

  SheetIterator(sheet);

 }

    private static void SheetIterator(Sheet sheet){

      Iterator iterator = sheet.iterator();

   while(iterator.hasNext()){

    Row nextRow = iterator.next();

    if(nextRow.getRowNum() cellIterator = nextRow.cellIterator();

while (cellIterator.hasNext()) {

   Cell cell = cellIterator.next();

    

   switch (cell.getCellType()) {

case Cell.CELL_TYPE_STRING:

System.out.print(cell.getStringCellValue());

break;

case Cell.CELL_TYPE_BOOLEAN:

System.out.print(cell.getBooleanCellValue());

break;

case Cell.CELL_TYPE_NUMERIC:

System.out.print(cell.getNumericCellValue());

break;

   }

   System.out.print(”   “);

}

System.out.println(”   “);

   } 

   System.out.println(”   “);

 }

 

 private static Sheet getSheets(Workbook book) {

  return(Sheet) book.getSheetAt(0);

 }

 public static Workbook getWorkBook(String path) throws FileNotFoundException, IOException{

  return path.endsWith(“.xls”)?(new HSSFWorkbook(new FileInputStream(new File(path)))):(path.endsWith(“.xlsx”)?(new XSSFWorkbook(new FileInputStream(new File(path)))):(null));

 }

}

model

public class Course implements Serializable {

 /**

  * 

  */

 private static final long serialVersionUID =063910L;

 private Integer serial;

 

 private String dept;

 

 private String major;

 

 private String course_name;

 

 private String credit;

 

 private String natrue;

 

 private String test_way;

 

 private String teacher_in_charge;

 public Course(){

  super();

 }

 public Integer getSerial() {

  return serial;

 }

 public void setSerial(Integer serial) {

  this.serial = serial;

 }

 public String getDept() {

  return dept;

 }

 public void setDept(String dept) {

  this.dept = dept;

 }

 public String getMajor() {

  return major;

 }

 public void setMajor(String major) {

  this.major = major;

 }

 public String getCourse_name() {

  return course_name;

 }

 public void setCourse_name(String course_name) {

  this.course_name = course_name;

 }

 public String getCredit() {

  return credit;

 }

 public void setCredit(String credit) {

  this.credit = credit;

 }

 public String getNatrue() {

  return natrue;

 }

 public void setNatrue(String natrue) {

  this.natrue = natrue;

 }

 public String getTest_way() {

  return test_way;

 }

 public void setTest_way(String test_way) {

  this.test_way = test_way;

 }

 public String getTeacher_in_charge() {

  return teacher_in_charge;

 }

 public void setTeacher_in_charge(String teacher_in_charge) {

  this.teacher_in_charge = teacher_in_charge;

 }

 

 

 

}

2.保存到数据库:

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.Iterator;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

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;

import org.lee.dao.Imp.BookImp;

import org.lee.dao.Imp.CourseImp;

import org.lee.model.Book;

import org.lee.model.Course;

public class Insert {

 public Insert() {

 }

 public static void start(String path) throws FileNotFoundException, IOException {

  Workbook book = getWorkBook(path);

  Sheet sheet = getSheets(book);

  System.out.println(“sheet name:” + sheet.getSheetName());

  SheetIterator(sheet);

 }

 private static void SheetIterator(Sheet sheet) {

  Iterator iterator = sheet.iterator();

  while (iterator.hasNext()) {

   Row nextRow = iterator.next();

   if (nextRow.getRowNum()  cellIterator = nextRow.cellIterator();

   StringBuffer course_str = new StringBuffer(“”);

   StringBuffer main_book_str = new StringBuffer(“”);

   StringBuffer sub_book_str = new StringBuffer(“”);

   while (cellIterator.hasNext()) {

    Cell cell = cellIterator.next();

    nextRow.getCell(cell.getColumnIndex()).setCellType(Cell.CELL_TYPE_STRING);

    if (cell.getColumnIndex() = 8 && cell.getColumnIndex() = 16 && cell.getColumnIndex() 

     Object sub_book_obj = cell.getStringCellValue();

     sub_book_str.append(sub_book_obj + “:”);

    }

   }

   Object course_obj = new Object;

   Object main_book_obj = new Object;

   Object sub_book_obj = new Object;

   String c_str = new String(course_str);

   System.out.println(c_str);

   String m_str = new String(main_book_str);

   String s_str = new String(sub_book_str);

   course_obj = c_str.split(“-“);

   main_book_obj = m_str.split(“:”);

   sub_book_obj = s_str.split(“:”);

   System.out.println(course_str);

   System.out.println(main_book_str);

   System.out.println(sub_book_str);

   Course course = new Course();

   course.setSerial(Integer.parseInt(course_obj.toString()));

   course.setDept(course_obj.toString());

   course.setMajor(course_obj.toString());

   course.setCourse_name(course_obj.toString());

   course.setCredit(course_obj.toString());

   course.setNatrue(course_obj.toString());

   course.setTest_way(course_obj.toString());

   course.setTeacher_in_charge(course_obj.toString());

   Book main_book = new Book();

   main_book.setBook_num(main_book_obj.toString());

   main_book.setBook_name(main_book_obj.toString());

   main_book.setPublishing(main_book_obj.toString());

   main_book.setAuthor(main_book_obj.toString());

   main_book.setPublish_date(main_book_obj.toString());

   main_book.setIsGaozhi(main_book_obj.toString());

   main_book.setIsSanlei(main_book_obj.toString());

   main_book.setT_book_numbers(main_book_obj.toString());

   

   Book sub_book = new Book();

   sub_book.setBook_num(sub_book_obj.toString());

   sub_book.setBook_name(sub_book_obj.toString());

   sub_book.setPublishing(sub_book_obj.toString());

   sub_book.setAuthor(sub_book_obj.toString());

   sub_book.setPublish_date(sub_book_obj.toString());

   sub_book.setIsGaozhi(sub_book_obj.toString());

   sub_book.setIsSanlei(sub_book_obj.toString());

   

   CourseImp c = new CourseImp();

   BookImp b = new BookImp();

   

   try {

    c.save(course);

    b.save(main_book);

    b.save(sub_book);

   } catch (Exception e) {

    e.printStackTrace();

   }

   System.out.println(” “);

  }

  System.out.println(”   “);

 }

 private static Sheet getSheets(Workbook book) {

  return (Sheet) book.getSheetAt(0);

 }

 public static Workbook getWorkBook(String path) throws FileNotFoundException, IOException {

  return path.endsWith(“.xls”) ? (new HSSFWorkbook(new FileInputStream(new File(path))))

    : (path.endsWith(“.xlsx”) ? (new XSSFWorkbook(new FileInputStream(new File(path)))) : (null));

 }

}

3.数据库连接

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

public class DBUtil {

 static String driver;

 static String username;

 static String pwd;

 static String url;

 static {

  try {

   ClassLoader classLoader = DBUtil.class.getClassLoader();

   InputStream is = classLoader.getResourceAsStream(“config/props/db.properties”);

   // System.out.println(is.available());

   Properties props = new Properties();

   props.load(is);

   url = props.getProperty(“url”);

   username = props.getProperty(“user”);

   pwd = props.getProperty(“password”);

   driver = props.getProperty(“driver”);

   Class.forName(driver);

  } catch (IOException e) {

   e.printStackTrace();

  } catch (ClassNotFoundException e) {

   e.printStackTrace();

  }

 }

 public static Connection getConnection() throws SQLException {

  Connection conn = (Connection) DriverManager.getConnection(url, username, pwd);

  if (conn == null) {

   System.out.println(“Failed to connect database…”);

  } else {

   System.out.println(“database connected successful…”);

  }

  return conn;

 }

 public static void release(ResultSet rs, PreparedStatement sta, Connection conn) {

  if (rs != null) {

   try {

    rs.close();

   } catch (SQLException e) {

    e.printStackTrace();

   }

  }

  if (sta != null) {

   try {

    sta.close();

   } catch (SQLException e) {

    e.printStackTrace();

   }

  }

  if (conn != null) {

   try {

    conn.close();

   } catch (SQLException e) {

    e.printStackTrace();

   }

  }

  System.out.println(“Resource release successful…”);

 }

 public static void release(PreparedStatement sta, Connection conn) {

  if (sta != null) {

   try {

    sta.close();

   } catch (SQLException e) {

    e.printStackTrace();

   }

  }

  if (conn != null) {

   try {

    conn.close();

   } catch (SQLException e) {

    e.printStackTrace();

   }

  }

  System.out.println(“Resource release successful…”);

如何用Apache POI操作Excel文件

ApachePOI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对MicrosoftOffice格式档案读和写的功能。结构:HSSF-提供读写MicrosoftExcel格式档案的功能。XSSF-提供读写MicrosoftExcelOOXML格式档案的功能。HWPF-提供读写MicrosoftWord格式档案的功能。HSLF-提供读写MicrosoftPowerPoint格式档案的功能。HDGF-提供读写MicrosoftVisio格式档案的功能。创建Excel文档示例1将演示如何利用JakartaPOIAPI创建Excel文档。示例1程序如下:importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFCell;importjava.io.FileOutputStream;publicclassCreateXL{publicstaticStringoutputFile=”D:\\test.xls”;publicstaticvoidmain(Stringargv){try{//创建新的Excel工作簿HSSFWorkbookworkbook=newHSSFWorkbook();//在Excel工作簿中建一工作表,其名为缺省值//如要新建一名为”效益指标”的工作表,其语句为://HSSFSheetsheet=workbook.createSheet(“效益指标”);HSSFSheetsheet=workbook.createSheet();//在索引0的位置创建行(最顶端的行)HSSFRowrow=sheet.createRow((short)0);//在索引0的位置创建单元格(左上端)HSSFCellcell=row.createCell((short)0);//定义单元格为字符串类型cell.setCellType(HSSFCell.CELL_TYPE_STRING);//在单元格中输入一些内容cell.setCellValue(“增加值”);//新建一输出文件流FileOutputStreamfOut=newFileOutputStream(outputFile);//把相应的Excel工作簿存盘workbook.write(fOut);fOut.flush();//操作结束,关闭文件fOut.close();System.out.println(“文件生成”);}catch(Exceptione){System.out.println(“已运行xlCreate():”+e);}}}读取Excel文档中的数据示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为test1.xls的Excel文件。示例2程序如下:importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFCell;importjava.io.FileInputStream;publicclassReadXL{publicstaticStringfileToBeRead=”D:\\test1.xls”;publicstaticvoidmain(Stringargv){try{//创建对Excel工作簿文件的引用HSSFWorkbookworkbook=newHSSFWorkbook(newFileInputStream(fileToBeRead));//创建对工作表的引用。//本例是按名引用(让我们假定那张表有着缺省名”Sheet1″)HSSFSheetsheet=workbook.getSheet(“Sheet1”);//也可用getSheetAt(intindex)按索引引用,//在Excel文档中,之一张工作表的缺省索引是0,//其语句为:HSSFSheetsheet=workbook.getSheetAt(0);//读取左上端单元HSSFRowrow=sheet.getRow(0);HSSFCellcell=row.getCell((short)0);//输出单元内容,cell.getStringCellValue()就是取所在单元的值System.out.println(“左上端单元是:”+cell.getStringCellValue());}catch(Exceptione){System.out.println(“已运行xlRead():”+e);}}}设置单元格格式在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,之一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:1、创建字体,设置其为红色、粗体:HSSFFontfont=workbook.createFont();font.setColor(HSSFFont.COLOR_RED);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);2、创建格式HSSFCellStylecellStyle=workbook.createCellStyle();cellStyle.setFont(font);3、应用格式HSSFCellcell=row.createCell((short)0);cell.setCellStyle(cellStyle);cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellValue(“标题”);处理WORD文档importjava.io.*;importorg.textmining.text.extraction.WordExtractor;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFCell;publicclassTestPoi{publicTestPoi(){}publicstaticvoidmain(Stringargs)throwsException{FileInputStreamin=newFileInputStream(“D:\\a.doc”);WordExtractorextractor=newWordExtractor();Stringstr=extractor.extractText(in);//System.out.println(“theresultlengthis”+str.length());System.out.println(str);}}

关于apache poi循环写数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/247449.html<

(0)
管理的头像管理
上一篇2025-04-27 03:14
下一篇 2025-04-27 03:15

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注