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

原创文章,作者:admin,如若转载,请注明出处:https://www.vaicdn.com/news/81740.html

(0)
admin
上一篇 2024 年 4 月 20 日
下一篇 2024 年 4 月 20 日

相关推荐