apache如何根据特定的列名和行名从Java中的Excel工作表中获取单元格值
我想根据特定的列名和行名获取单元格值。 这是我为实现它而编写的代码。对于工作簿中的第一张工作表,它可以正常工作,但对于同一工作簿中的另一张工作表,它会给我空指针异常
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelReader {
public FileInputStream fis;
String path = null;
private XSSFWorkbook workbook=null;
private XSSFSheet sheet;
private XSSFRow row=null;
private XSSFCell cell=null;
public ExcelReader() throws IOException {
path = System.getProperty("user.dir") + "\\Testdata.xlsx";
fis = new FileInputStream(path);
workbook = new XSSFWorkbook(fis);
}
public String getCellData(String sheetName, String testDataType, String testDataID) throws IOException {
sheet = workbook.getSheet(sheetName);
int i;
for(i=0;i<=sheet.getRow(0).getLastCellNum(); i++) {
row = sheet.getRow(0);
cell = row.getCell(i);
if(cell.getStringCellValue().equalsIgnoreCase(testDataType)) {
break;
}
}
for(int j=0; j<=sheet.getLastRowNum();j++) {
row = sheet.getRow(j);
cell= row.getCell(0);
DataFormatter df2 = new DataFormatter();
String valueAsString = df2.formatCellValue(cell);
if(testDataID.equals(valueAsString)) {
break;
}
}
cell=row.getCell(i);
String S= cell.getStringCellValue();
fis.close();
return S;
}
}
共 (0) 个答案