首页 > 解决方案 > 使用 POI 获取具有特定列名的每一行中的值

问题描述

我想读取 .xlsx 文件以获取具有特定列名的每一行中的值并将它们保存到字符串数组中。

Sample data from file.xlsx

A	  B	  C
A123	B123	C123
A456	B456	C456
A789	B789	C789
A999

This is the code that try to get values from column A, but it's not get the correct result.

InputStream is = file.getInputstream();
int rowTotal = 0;
XSSFWorkbook wb = new XSSFWorkbook(is);
XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row = sheet.getRow(0);
rowTotal = sheet.getLastRowNum();

if((rowTotal > 0) || (sheet.getPhysicalNumberOfRows() > 0)) {
 rowTotal++; 
 log.debug("rowTotal : "+rowTotal);				
 
 int colNum = -1;
 for(int i = 0; i <= rowTotal; i++) {
  if(row.getCell(i).getStringCellValue().trim().equals("A")) 
         colNum = i;
	 row = sheet.getRow(i+1);
	 XSSFCell cellA = row.getCell(colNum);
	 DataFormatter formatter = new DataFormatter();
	 String valueA = formatter.formatCellValue(cellA);
	 log.debug("Data from col A : "+valueA);
							
  }
 }
}

The result from log are..
rowTotal : 5
Data from col A : A123
Data from col A : A456
Data from col A : A789

Why it's not print "A999" ?

标签: javaexcelapache-poi

解决方案


推荐阅读