亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不替換先前數據的情況下將每個循環實例的新行中的數據寫入 Excel 表

如何在不替換先前數據的情況下將每個循環實例的新行中的數據寫入 Excel 表

楊魅力 2022-11-02 10:26:33
我正在嘗試將數據從 web 表寫入 excel 表并能夠將數據寫入 excel,但是對于 for 循環的第二個實例,它會覆蓋數據或不寫入數據,我的要求是將數據寫入 excel 到新行中for循環的每個新實例而不是覆蓋..有可能..?任何幫助將不勝感激..提前致謝數據正在寫入 excel,但在 reader.setCellData 附近需要幫助public class DataScraper { public static void main(String[] args) throws InterruptedException {    WebDriver driver = new ChromeDriver();    driver.manage().window().maximize();    driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);    driver.get("https://etrain.info/in?PAGE=LIST--RAJ-TRAINS--1");    //*[@id="lowerdata"]/table/tbody/tr[1]/td/table/tbody/tr[5]/td[1]/a    //*[@id="lowerdata"]/table/tbody/tr[1]/td/table/tbody/tr[6]/td[1]/a    //*[@id="lowerdata"]/table/tbody/tr[1]/td/table/tbody/tr[29]/td[1]/a    String beforeXpath_TrainNoRow = "//td[@id='content']//tr[";    String afterXpath_TrainNoRow = "]//td[1]";    //div[@id='sublowerdata']//tr[3]//td[1]    //div[@id='sublowerdata']//tr[11]//td[1]    String beforeXpath_No = "//div[@id='sublowerdata']//tr[";    String afterXpath_No = "]//td[1]";    //int rowCount = TrainList.size();    Xls_Reader reader = new Xls_Reader("C:\\Selenium_Automation\\Projects\\DataDriven_FW\\src\\com\\testdata\\TrainSchedule.xlsx");    if(!reader.isSheetExist("Rajdhani")) {        reader.addSheet("Rajdhani");        reader.addColumn("Rajdhani", "IslNo");        //reader.addColumn("TrainSearch", "TrainName");    }    for(int i = 5; i<= 30; i++) {        String actualXpath_TrainNoRow = beforeXpath_TrainNoRow + i + afterXpath_TrainNoRow ;        WebElement TrainNo = driver.findElement(By.xpath(actualXpath_TrainNoRow));        TrainNo.click();        Thread.sleep(5000);        List<WebElement> rows = driver.findElements(By.xpath("//table[@id='schtbl']//tr"));        System.out.println("total rows is "+ rows.size());        int rowCount = rows.size();        for(int j = 3; j<= rowCount - 1; j++) {         }        driver.navigate().back();        driver.navigate().refresh();    }
查看完整描述

1 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

嘿不知道你想在這個腳本中實現什么,但這里是更新的腳本。請更新以下代碼中的 chrome 驅動程序路徑和 excel 文件路徑。僅供參考:xpath 可以有效地編寫模式,但在這篇文章中沒有觸及它們。


import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.List;

import java.util.concurrent.TimeUnit;


import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.openqa.selenium.By;

import org.openqa.selenium.JavascriptExecutor;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;


public class TrainDeatils {


    public static void main(String[] args) throws InterruptedException, IOException {

        System.setProperty("webdriver.chrome.driver", "XXXchromedriver path goes here XXX");

        WebDriver driver = new ChromeDriver();

        driver.manage().window().maximize();

        driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);

        driver.get("https://etrain.info/in?PAGE=LIST--RAJ-TRAINS--1");


        String beforeXpath_TrainNoRow = "//td[@id='content']//tr[";

        String afterXpath_TrainNoRow = "]//td[1]";

        String beforeXpath_No = "//div[@id='sublowerdata']//tr[";

        String afterXpath_No = "]//td[1]";


        XSSFWorkbook workbook = new XSSFWorkbook();

        XSSFSheet spreadsheet = workbook.createSheet( "Rajdhani");

        XSSFRow header;

        header = spreadsheet.createRow(0);

        header.createCell(0).setCellValue("Rajdhani");

        header.createCell(1).setCellValue("IslNo");

        int rowNumber = 1;

        for(int i = 5; i<= 7; i++) {

            Thread.sleep(1000);

            String actualXpath_TrainNoRow = beforeXpath_TrainNoRow + i + afterXpath_TrainNoRow ;

            WebElement TrainNo = driver.findElement(By.xpath(actualXpath_TrainNoRow));

            TrainNo.click();

            Thread.sleep(5000);


            List<WebElement> rows = driver.findElements(By.xpath("//table[@id='schtbl']//tr"));

            System.out.println("total rows is "+ rows.size());


            int rowCount = rows.size();


            for(int j = 3; j<= rowCount - 1; j++) {

                rowNumber = rowNumber+1;

                XSSFRow currentRow = spreadsheet.createRow(rowNumber);

                String actualXpath_No = beforeXpath_No + j + afterXpath_No ;

                String SrNo = driver.findElement(By.xpath(actualXpath_No)).getText();

                int islNo = Integer.parseInt(SrNo);

                System.out.println(islNo);

                currentRow.createCell(0).setCellValue(j);

                currentRow.createCell(1).setCellValue(SrNo);

            }


            driver.navigate().back();

            driver.navigate().refresh();


        }

        FileOutputStream out = new FileOutputStream(new File("XXXexcel file path goes hereXXX\\TrainDetails.xlsx"));


        workbook.write(out);

        out.close();

        driver.close();




    }


}




查看完整回答
反對 回復 2022-11-02
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號