我很难想象一种执行此操作的好方法。正如您在下面的代码中所看到的,我会遍历每一行并获取每个单元格的值。但是,在实际运行查询以将其添加到表中时,如果您可以一次输入整行,则会更容易。虽然我不想为excel文档中的每一列创建单独的值,但列数/变异性足够大。关于如何更有效地运行这个的任何想法?
for (int i=1; i<rowNum; i++) {
XSSFRow row = ws.getRow(i) ;
for (int j = 0; j<colNum; j++) {
XSSFCell cell = row.getCell(j) ;
String value = cell.getStringCellValue();
data[i][j] = value ;
System.out.println("the value is " + value);
stmt.executeUpdate("INSERT INTO databasetable VALUES(" + value + ")");
}
}
答案 0 :(得分:0)
您可以在工作表上生成一个迭代器,以提高它的效率。
如下所示
public static Vector read(String fileName) {
Vector cellVectorHolder = new Vector();
try{
FileInputStream myInput = new FileInputStream(fileName);
XSSFWorkbook myWorkBook = new XSSFWorkbook(myInput);
XSSFSheet mySheet = myWorkBook.getSheetAt(0);
Iterator rowIter = mySheet.rowIterator();
while(rowIter.hasNext()){
XSSFRow myRow = (XSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
List list = new ArrayList();
while(cellIter.hasNext()){
XSSFCell myCell = (XSSFCell) cellIter.next();
list.add(myCell);
}
cellVectorHolder.addElement(list);
}
}catch (Exception e){e.printStackTrace(); }
return cellVectorHolder;
}
答案 1 :(得分:0)
我最终使用了浓缩,只是在for循环中的每个值之间插入了一个。