Apache POI>无法阅读Excel表格

时间:2016-10-03 10:45:30

标签: java apache selenium-webdriver webdriver apache-poi

Apache POI>无法阅读Excel表格

  1. Iam成功将数据写入Excel工作表
  2. 当我使用代码访问Excel文档中的另一个工作表时,它可以正常工作
  3. 以下代码作品:

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

    在尝试访问同一工作簿中的其他工作表时代码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

1 个答案:

答案 0 :(得分:0)

@Potnuru Ravi感谢您的帮助

以下代码似乎已经完成了这个诀窍:

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();
    }
}