如何使用apache POI

时间:2016-12-28 06:18:04

标签: java excel apache selenium

以下是我正在使用的方法。它能够在第一张工作簿上读/写,但对于所有其他可用工作表,它不能这样做。 在下面找到代码:

public void ResetExecutionStatus(String logpath , String columnName)
{
    boolean isPresent = false;

    try
    {
        FileInputStream fs = new FileInputStream(new File(logpath));
        XSSFWorkbook workBook = new XSSFWorkbook(fs);

        int x = workBook.getNumberOfSheets();
        for (int n=1; n<x; n++)
        {

        XSSFSheet sheet = workBook.getSheetAt(n);
        System.out.println("Sheet Name: "+sheet.getSheetName());

        for (int i=0; i<sheet.getLastRowNum(); i++)
        {
        Row r = sheet.getRow(i);
        System.out.println("Value of i: "+i);
        for (int cn=0; cn<r.getLastCellNum(); cn++)
          {
            Cell c = r.getCell(cn);
            String text = c.getStringCellValue();
            if(columnName.equalsIgnoreCase(text))
            {
                System.out.println("Column Name: "+text);
                for(int a = i+1 ; a <sheet.getLastRowNum(); a++)
                {
                    Row p = sheet.getRow(a);
                    Cell q = p.getCell(cn);
                    String CurrentStatus = q.getStringCellValue();
                    System.out.println("Current Status: "+CurrentStatus);
                    if(CurrentStatus.equalsIgnoreCase("PASS") || CurrentStatus.equalsIgnoreCase("FAIL") || CurrentStatus.equalsIgnoreCase("ON HOLD"))
                    {
                        q .setCellValue("NOT EXECUTED");
                    }
                }

                isPresent = true;
            }
            if(isPresent){break;}
          }
         if(isPresent){break;}  
        }

      }

        FileOutputStream out = new FileOutputStream(new File(logpath));
        workBook.write(out);

        out.close();
        fs.close();
        System.out.println("Data has been reset for Column Name : " +columnName );
    }

    catch(IOException e)
    {
        e.printStackTrace();
    }   
}

主要方法是:

public class TestCall {

public static void main(String[] args) {

    String path = "C:\\Users\\abcdef\\Desktop\\ManualLog\\TestLog.xlsx";
    clearLog ob = new clearLog();

    ob.ResetExecutionStatus(path, "Execution Status");


}

}

控制台中的结果是:

  

工作表名称:Sheet1   i的值:0   i的值:1   i的值:2   i的值:3   i的值:4   列名:执行状态   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   现状:未执行   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   当前状态:   表名:Sheet2   i的值:0   表名:Sheet3   i的值:0   表名:Sheet4   i的值:0   已为列名称:执行状态

重置数据

0 个答案:

没有答案