有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案