在现代编程环境下,许多应用程序需要处理大量的数据。其中一种常见的应用程序是将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循环写数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。