Запись значения, извлеченного из текстового поля, в столбец Excel через POI с помощью Selenium

Я извлек значение из текстового поля и сохранил его в виде строки. Теперь я хочу записать это значение, хранящееся в строке, в столбец с именем ‘Username’ в файле excel.
Например: получил имя пользователя из текстового поля как «Test1» и хотите записать это в столбце «имя пользователя» Excel. Я использую POI для записи файла excel с помощью Selenium.

2 ответа

  1. привет, пожалуйста, реализовать логику, как показано ниже

    public static void writeExcel (String filePath,String fileName,String sheetName,String[] dataToWrite) создает исключение IOException{

            //Create a object of File class to open xlsx file
            File file =    new File(filePath+"\"+fileName);
            //Create an object of FileInputStream class to read excel file
            FileInputStream inputStream = new FileInputStream(file);
            Workbook Workbook = null;
            //Find the file extension by spliting file name in substing and getting only extension name
            String fileExtensionName = fileName.substring(fileName.indexOf("."));
            //Check condition if the file is xlsx file
            if(fileExtensionName.equals(".xlsx")){
            //If it is xlsx file then create object of XSSFWorkbook class
            Workbook = new XSSFWorkbook(inputStream);
            }
    
            //Check condition if the file is xls file
            else if(fileExtensionName.equals(".xls")){
                //If it is xls file then create object of XSSFWorkbook class
                Workbook = new HSSFWorkbook(inputStream);
            }  
    
        //Read excel sheet by sheet name    
        Sheet sheet = Workbook.getSheet(sheetName);
        //Get the current count of rows in excel file
        int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum();
        //Get the first row from the sheet
        Row row = sheet.getRow(0);
        //Create a new row and append it at last of sheet
        Row newRow = sheet.createRow(rowCount+1);
        //Create a loop over the cell of newly created Row
        for(int j = 0; j < row.getLastCellNum(); j++){
            //Fill data in row
            Cell cell = newRow.createCell(j);
            cell.setCellValue(dataToWrite[j]);
    
        }
        //Close input stream
        inputStream.close();
        //Create an object of FileOutputStream class to create write data in excel file
        FileOutputStream outputStream = new FileOutputStream(file);
        //write data in the excel file
        Workbook.write(outputStream);
        //close output stream
        outputStream.close();
        }
    

    Теперь вызовите выше в основном методе, как показано ниже

     public static void main(String[] args) {
                // TODO Auto-generated method stub
                WebDriver driver = new FirefoxDriver();
                driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                String valueToWrite = "test 1";
                //Create an object of current class
                WriteExcelFile objExcelFile = new WriteExcelFile();
                //Write the file using file name , sheet name and the data to be filled
                objExcelFile.writeExcel(System.getProperty("user.dir")+"\src\excelExportAndFileIO","ExportExcel.xlsx","ExcelDemo",valueToWrite);
    
            }
    
  2. Вам нужно знать номер столбца столбца «Username» в листе excel. После того, как вы знаете, что тогда будет легко написать значение строки, которую вы захватили с веб-страницы. Вы можете принять ниже подход —

            File excelFile = new File("C:\path\of\excel\file\excel.xlsx");
            String cellNo = 3; //column number of "UserName" column
            String rowNo = 1; // row number 
            String userName = "Test1"; // username fetched from textbox
    
            FileInputStream fis = new FileInputStream(excelFile);
            XSSFWorkbook workbook = (XSSFWorkbook) WorkbookFactory.create(fis);
            XSSFSheet sheet = workbook.getSheetAt(0);
            Row row = sheet.getRow(rowNo); 
            row.createCell(cellNo).setCellValue(userName);
            fis.close();
            FileOutputStream fos = new FileOutputStream(excelFile);
            workbook.write(fos);
            fos.close();
    

    Это очень простой подход именно для этой цели и не обобщенный ни для какой другой задачи.
    Вы можете взглянуть на простой скрипт, который читает с листа excel и записывает обратно в тот же лист excel с помощью Apache POI, здесь.

    С уважением,
    Punkaaj