Java 使用Apache POI库时无法读取一行中的所有单元格值
当迭代一行中的所有单元格时,我遇到了一个问题,我能够正确地读取前4个单元格,其余所有单元格都为空。谢谢你的帮助 //下面是我正在使用的代码Java 使用Apache POI库时无法读取一行中的所有单元格值,java,apache,apache-poi,Java,Apache,Apache Poi,当迭代一行中的所有单元格时,我遇到了一个问题,我能够正确地读取前4个单元格,其余所有单元格都为空。谢谢你的帮助 //下面是我正在使用的代码 InputStream is = new FileInputStream(new File(fileName)); Workbook workbook = new XSSFWorkbook(is); int numberOfSheets = workbook.getNumberOfSheets(); for (int i = 0; i
InputStream is = new FileInputStream(new File(fileName));
Workbook workbook = new XSSFWorkbook(is);
int numberOfSheets = workbook.getNumberOfSheets();
for (int i = 0; i < numberOfSheets; i++) {
Sheet sheet = workbook.getSheetAt(i);
String name = sheet.getSheetName();
if (name.equals(sheetName)) {
Iterator<Row> rowItr = sheet.rowIterator();
while (rowItr.hasNext()) {
Row eachRow = rowItr.next();
QuestionObjBuilder builder = new QuestionObjBuilder();
Iterator<Cell> cellItr = eachRow.cellIterator();
int index = 1;
while (cellItr.hasNext()) {
Cell eachCell = cellItr.next();
int cellType = eachCell.getCellType();
String label = "";
if (cellType == Cell.CELL_TYPE_STRING) {
label = eachCell.getStringCellValue();
} else if (cellType == Cell.CELL_TYPE_NUMERIC) {
int value = (int) eachCell.getNumericCellValue();
label = String.valueOf(value);
}
builder = builder.set(index, label);
index++;
if (index > 10) {
break;
}
}
}
}
}
workbook.close();
如果您的目标是从excel中读取所有单元格,则可以使用此代码
FileInputStream fileInputStream = new FileInputStream(fileName);
HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
HSSFSheet worksheet = workbook.getSheet(sheetName);
Iterator<Row> it = worksheet.rowIterator();
while(it.hasNext()){
HSSFRow r = (HSSFRow) it.next();
Iterator<Cell> it1=r.cellIterator();
while(it1.hasNext()){
HSSFCell cell = (HSSFCell)it1.next();
System.out.println("Row: "+cell.getRowIndex()+" ,Column: "+cell.getColumnIndex());
System.out.println(cell);
}
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
您的代码在我的设置中运行良好。是QuestionObjBuilder导致了这个问题吗?试着使用一个简单的数字xlsx文件,看看是否有问题。你试过了吗?谢谢你的评论,我在迭代单元格时犯了一个错误。上面的代码对我来说也很好。如果你有文件,不要使用输入流!看看为什么not@Gagravarr当使用输入流而不是文件时,内存使用将发生变化。