Java 将excel代码写入数据库

Java 将excel代码写入数据库,java,servlets,Java,Servlets,我正在尝试读取excel文件,然后将excel的内容写入数据库。我能够阅读excel,如果打印,它会显示在输出下面。 我想知道如何将这些数据分离或拆分为数据库中的列,并将数据存储在数据库中。我有一个DB表格,如果我分成列,它可以保存下面的数据。 //CODE OUTPUT 1.0 Henry Rey Staff IT Software Engg New Hire TigoAdmin 11-Oct-2012

我正在尝试读取excel文件,然后将excel的内容写入数据库。我能够阅读excel,如果打印,它会显示在输出下面。 我想知道如何将这些数据分离或拆分为数据库中的列,并将数据存储在数据库中。我有一个DB表格,如果我分成列,它可以保存下面的数据。

//CODE OUTPUT
1.0     Henry       Rey     Staff       IT      Software Engg       New Hire        TigoAdmin       11-Oct-2012     11-Oct-2012     555.0
2.0 Nick Murry Staff IT Administrator New Hire TigoAdmin 11-Oct-2012 11-Oct-2012 555.0

// BELOW is the CODE

package com.project.bulk; import java.io.FileInputStream; import java.util.Iterator; import java.util.Vector; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class ReadExcelFile { public static void main(String[] args) { String fileName = "C:\\excelFile.xls"; Vector dataHolder = ReadCSV(fileName); printCellDataToConsole(dataHolder); } public static Vector ReadCSV(String fileName) { Vector cellVectorHolder = new Vector(); try { FileInputStream myInput = new FileInputStream(fileName); POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); HSSFSheet mySheet = myWorkBook.getSheetAt(0); Iterator rowIter = mySheet.rowIterator(); while (rowIter.hasNext()) { HSSFRow myRow = (HSSFRow) rowIter.next(); Iterator cellIter = myRow.cellIterator(); Vector cellStoreVector = new Vector(); while (cellIter.hasNext()) { HSSFCell myCell = (HSSFCell) cellIter.next(); cellStoreVector.addElement(myCell); } cellVectorHolder.addElement(cellStoreVector); } } catch (Exception e) { e.printStackTrace(); } return cellVectorHolder; } private static void printCellDataToConsole(Vector dataHolder) { for (int i = 0; i < dataHolder.size(); i++) { Vector cellStoreVector = (Vector) dataHolder.elementAt(i); for (int j = 0; j < cellStoreVector.size(); j++) { HSSFCell myCell = (HSSFCell) cellStoreVector.elementAt(j); String stringCellValue = myCell.toString(); System.out.print(stringCellValue + "\t\t"); } System.out.println(); } } }

//代码输出
1.0 Henry Rey员工IT软件工程师新员工TigoAdmin 2012年10月11日2012年10月11日555.0
2.0 Nick Murry员工IT管理员新聘TigoAdmin 2012年10月11日2012年10月11日555.0

//下面是代码

包com.project.bulk; 导入java.io.FileInputStream; 导入java.util.Iterator; 导入java.util.Vector; 导入org.apache.poi.hssf.usermodel.HSSFCell; 导入org.apache.poi.hssf.usermodel.HSSFRow; 导入org.apache.poi.hssf.usermodel.HSSFSheet; 导入org.apache.poi.hssf.usermodel.HSSFWorkbook; 导入org.apache.poi.poifs.filesystem.poifsfsystem; 公共类ReadExcelFile{ 公共静态void main(字符串[]args){ String fileName=“C:\\excelFile.xls”; 矢量数据保持器=ReadCSV(文件名); printCellDataToConsole(数据持有者); } 公共静态向量ReadCSV(字符串文件名){ Vector cellVectorHolder=新向量(); 试一试{ FileInputStream myInput=新的FileInputStream(文件名); POIFSFileSystem myFileSystem=新的POIFSFileSystem(myInput); HSSFWorkbook myWorkBook=新的HSSFWorkbook(myFileSystem); HSSFSheet mySheet=myWorkBook.getSheetAt(0); 迭代器rowIter=mySheet.rowitter(); while(rowIter.hasNext()){ HSSFRow myRow=(HSSFRow)rowIter.next(); 迭代器cellIter=myRow.cellIterator(); Vector cellStoreVector=新向量(); while(cellIter.hasNext()){ HSSFCell myCell=(HSSFCell)cellIter.next(); cellStoreVector.addElement(菌丝体); } cellVectorHolder.addElement(cellStoreVector); } }捕获(例外e){ e、 printStackTrace(); } 返回细胞载体; } 私有静态void printCellDataToConsole(向量数据持有者){ 对于(int i=0;i
如果不知道要向语句发送多少个参数,可以创建一个方法来处理它。我将给你一个非常基本的例子,记住这种方法可以大大改进

public void executeSQLUpdate(String sql, List<Object> arguments) {
    Connection con = null;
    PreparedStatement pstmt = null;
    try {
        con = getConnection(); //a method that returns a java.sql.Connection to your database
        pstmt = con.prepareStatement(sql);
        if (arguments != null) {
            int i = 1;
            for(Object o : arguments) {
                pstmt.setObject(i++, o);
            }
        }
        //method to execute insert, update, delete statements...
        pstmt.executeUpdate();
    } catch(SQLException e) {
        //handle the error...
    } finally {
        //closing the resources (always in finally block, not in the try!)
        try {
            if (pstmt != null) {
                pstmt.close();
            }
            if (con != null) {
                con.close();
            }
        } catch (SQLException e) {
        }
    }
}

//calling the method to execute a sql insert statement
public void yourMethodToData(List<Object> arguments) {
    String sql = "INSERT INTO YOUR TABLE VALUES(?)";
    executeSQLUpdate(sql, arguments);
}
public void executeSQLUpdate(字符串sql,列表参数){
连接con=null;
PreparedStatement pstmt=null;
试一试{
con=getConnection();//返回到数据库的java.sql.Connection的方法
pstmt=con.preparest陈述(sql);
if(参数!=null){
int i=1;
for(对象o:参数){
setObject(i++,o);
}
}
//方法来执行insert、update、delete语句。。。
pstmt.executeUpdate();
}捕获(SQLE异常){
//处理错误。。。
}最后{
//关闭资源(始终在finally块中,而不是在try中!)
试一试{
如果(pstmt!=null){
pstmt.close();
}
如果(con!=null){
con.close();
}
}捕获(SQLE异常){
}
}
}
//调用该方法以执行sql insert语句
public void yourMethodToData(列出参数){
String sql=“插入表值(?”;
executeSQLUpdate(sql、参数);
}
Vector
类实现了
List
接口,因此您可以通过这些方法传递
Vector


作为旁注,不应使用
向量
,而应使用由
数组列表
实现的
列表
。更多信息:

您需要学习如何使用
String.split()
方法和JDBC API与您的数据库通信。@code Guru这有助于在数据库中插入数据吗?因为您有一个向量,其中包含Excel文件中的数据,您只需要JDBC语句就可以在表中插入数据了。@LuiggiMendoza:这正是我现在遇到的问题。你能写一个示例代码如何将矢量数据发送到DB吗?