Java 如何使用列名迭代excel工作表中的当前行?
我需要在excel工作表上进行分析,并从每一行中检索值以将其存储在数据库中。目前,我是根据每个单元格所持有的值的类型来做这件事的。在当前的情况下这是可以的,因为我只需要处理2列。但是我有一个新的需求,需要解析一个包含超过12列的excel工作表。在这种情况下怎么做?如果使用带有表头的结构化表,是否有一种方法可以基于列迭代每一行 我目前的代码如下Java 如何使用列名迭代excel工作表中的当前行?,java,excel,apache-poi,xssf,Java,Excel,Apache Poi,Xssf,我需要在excel工作表上进行分析,并从每一行中检索值以将其存储在数据库中。目前,我是根据每个单元格所持有的值的类型来做这件事的。在当前的情况下这是可以的,因为我只需要处理2列。但是我有一个新的需求,需要解析一个包含超过12列的excel工作表。在这种情况下怎么做?如果使用带有表头的结构化表,是否有一种方法可以基于列迭代每一行 我目前的代码如下 File file = new File(UPLOAD_LOCATION + fileUpload.getFile().getOrigi
File file = new File(UPLOAD_LOCATION + fileUpload.getFile().getOriginalFilename());
FileInputStream excelFile = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(excelFile);
Sheet datatypeSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = datatypeSheet.iterator();
while (iterator.hasNext()) {
Row currentRow = iterator.next();
Iterator<Cell> cellIterator = currentRow.iterator();
while (cellIterator.hasNext()) {
Cell currentCell = cellIterator.next();
// getCellTypeEnum shown as deprecated for version 3.15
// getCellTypeEnum ill be renamed to getCellType starting
// from version 4.0
if (currentCell.getCellTypeEnum() == CellType.STRING) {
System.out.print(currentCell.getStringCellValue() + "--");
} else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
System.out.print(currentCell.getNumericCellValue() + "--");
}
}
有没有一种方法可以同样传递列标题的名称
请帮忙
提前感谢。根据评论
InputStream excelFile = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(excelFile);
ArrayList colsList=new ArrayList();
colsList.add("Col1");
colsList.add("Col2");
colsList.add("Col3");
colsList.add("Col4");
Sheet datatypeSheet = workbook.getSheetAt(0);
int numOfRows=datatypeSheet.getLastRowNum();
for(int rowNum=0;rowNum<numOfRows;rowNum++){
Row row=datatypeSheet.getRow(rowNum);
int numOfCellPerRow=row.getLastCellNum();
for(int cellNum=0;cellNum<numOfCellPerRow;cellNum++){
if(colsList.contains(row.getCell(rowNum).getStringCellValue())){
Cell cell=row.getCell(cellNum)
System.out.println("Cell No:"+cellNum+" value is:
"+cell.getStringCellValue())
}
}
System.out.println("This is a new Row");
}
InputStream excelFile=新文件InputStream(文件);
工作簿=新XSSF工作簿(Excel文件);
ArrayList colsList=新的ArrayList();
colsList.添加(“Col1”);
colsList.添加(“Col2”);
colsList.添加(“Col3”);
colsList.添加(“Col4”);
工作表数据类型工作表=工作簿。getSheetAt(0);
int numorrows=datatypeSheet.getLastRowNum();
对于(int rowNum=0;rowNum,基于注释
InputStream excelFile = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(excelFile);
ArrayList colsList=new ArrayList();
colsList.add("Col1");
colsList.add("Col2");
colsList.add("Col3");
colsList.add("Col4");
Sheet datatypeSheet = workbook.getSheetAt(0);
int numOfRows=datatypeSheet.getLastRowNum();
for(int rowNum=0;rowNum<numOfRows;rowNum++){
Row row=datatypeSheet.getRow(rowNum);
int numOfCellPerRow=row.getLastCellNum();
for(int cellNum=0;cellNum<numOfCellPerRow;cellNum++){
if(colsList.contains(row.getCell(rowNum).getStringCellValue())){
Cell cell=row.getCell(cellNum)
System.out.println("Cell No:"+cellNum+" value is:
"+cell.getStringCellValue())
}
}
System.out.println("This is a new Row");
}
InputStream excelFile=新文件InputStream(文件);
工作簿=新XSSF工作簿(Excel文件);
ArrayList colsList=新的ArrayList();
colsList.添加(“Col1”);
colsList.添加(“Col2”);
colsList.添加(“Col3”);
colsList.添加(“Col4”);
工作表数据类型工作表=工作簿。getSheetAt(0);
int numorrows=datatypeSheet.getLastRowNum();
对于(int rowNum=0;rowNumDo您需要它作为迭代器吗?正常循环会有问题吗?@basilbatikhi没有问题。有办法吗?当然有办法,而且迭代器肯定有办法,但实际上我不知道如何使用它获取第1行中的值,创建从第1行单元格值到其列号的映射,然后处理ot她的行查找列到第1行的值?您需要它作为迭代器吗?正常循环可能有问题吗?@BasilBattikhi没有问题。有办法这样做吗?当然有办法,而且肯定有迭代器的办法,但实际上我不知道如何使用它获取第1行的值,创建一个从第1行单元格值到其列号的映射s、 然后处理其他行查找列到第1行的值?感谢您的发布,但这实际上不是我想要的。我需要使用列名获取每列中的值。如果有必要,我可以使用结构化引用表。感谢您的发布,但这实际上不是我想要的。我需要获取每列中的值使用列名。如果有必要,我可以使用结构化引用表。