简体   繁体   English

Apache POI>无法读取Excel工作表

[英]Apache POI > Unable to Read Excel Sheet

Apache POI > Unable to Read Excel Sheet Apache POI>无法读取Excel工作表

  1. Iam successfully able to write data to Excel sheet Iam成功地将数据写入Excel工作表
  2. When i use the code to access another sheet within the Excel document it dosnt work 当我使用代码访问Excel文档中的另一个工作表时,它可以工作

Following code Works: 以下代码作品:

        priceband = p.getProperty("priceband");
    if(priceband.contains("nationala")) {
        ExcelUtils.setExcelFile(Constant.Path_TestData + Constant.File_TestData,"NationalA");
        ExcelUtils.setCellData("example22222", 1, 1);
    }

Following code dosnt work when trying to access the other worksheet within the same workbook, i get a null pointer exception when running the code: 在尝试访问同一工作簿中的其他工作表时代码dosnt工作,我在运行代码时得到一个空指针异常:

    if(priceband.contains("nationala")) {
    ExcelUtils.setExcelFile(Constant.Path_TestData + Constant.File_TestData,"NationalB");
    ExcelUtils.setCellData("example22222", 1, 1);
}


public class ExcelUtils {
private static XSSFSheet ExcelWSheet;
private static XSSFWorkbook ExcelWBook;
private static XSSFCell Cell;
private static XSSFRow Row;
public FileInputStream fis = null;
public FileOutputStream fileOut = null;
public static String priceband;

// This method is to set the File path and to open the Excel file, Pass
// Excel Path and Sheetname as Arguments to this method
public static void setExcelFile(String Path, String SheetName) throws Exception {
    try {
        // Open the Excel file
        FileInputStream ExcelFile = new FileInputStream(Path);
        // Access the required test data sheet
        ExcelWBook = new XSSFWorkbook(ExcelFile);
        ExcelWSheet = ExcelWBook.getSheet(SheetName);
    } catch (Exception e) {
        throw (e);
    }
}

// This method is to read the test data from the Excel cell, in this we are
// passing parameters as Row num and Col num
public static String getCellData(int RowNum, int ColNum) throws Exception {
    try {
        Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);
        String CellData = Cell.getStringCellValue();
        return CellData;
    } catch (Exception e) {
        return "";
    }
}

// This method is to write in the Excel cell, Row num and Col num are the
// parameters
public static void setCellData(String Result, int RowNum, int ColNum) throws Exception {
    try {
        Row = ExcelWSheet.getRow(RowNum);
        Cell = Row.getCell(ColNum, Row.RETURN_BLANK_AS_NULL);
        if (Cell == null) {
            Cell = Row.createCell(ColNum);
            Cell.setCellValue(Result);
        } else {
            Cell.setCellValue(Result);
        }

        // Constant variables Test Data path and Test Data file name
        FileOutputStream fileOut = new FileOutputStream(Constant.Path_TestData + Constant.File_TestData);
        ExcelWBook.write(fileOut);
        fileOut.flush();
        fileOut.close();

    } catch (Exception e) {
        throw (e);
    }
}

public static void setupExcelPriceband() throws Exception {
    Properties p = new Properties();
    FileInputStream fi = new FileInputStream("C:\\Users\\gpb7642\\Desktop\\PhAutomationFramework\\PhFramework\\src\\main\\java\\PhFramework\\testData\\Setup.properties");
    p.load(fi);
    priceband = p.getProperty("priceband");
    if(priceband.contains("nationala")) {
        ExcelUtils.setExcelFile(Constant.Path_TestData + Constant.File_TestData,"NationalA");
        ExcelUtils.setCellData("example22222", 1, 1);
    }
    else if (priceband.contains("nationalb")) {
        ExcelUtils.setExcelFile(Constant.Path_TestData + Constant.File_TestData, "NationalB");
        ExcelUtils.setCellData("df", 1, 1);
    }else {
    }
}

} }

Excel file Excel文件

@Potnuru Ravi thanks for your help @Potnuru Ravi感谢您的帮助

The following code seems to have done the trick: 以下代码似乎已经完成了这个诀窍:

public void setCellData(String sheetName, int colNum, int rowNum, String str) {
    int index = workbook.getSheetIndex(sheetName);
    sheet = workbook.getSheetAt(index);
    row = sheet.getRow(rowNum);
    cell = row.createCell(colNum);
    cell.setCellValue(str);
    try {
        fileOut = new FileOutputStream(path);

        try {
            workbook.write(fileOut);
            fileOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM