Экспорт автоматического значения в файл Excel в Java - PullRequest
0 голосов
/ 11 июня 2018

Я использую Selen Webdriver в затмении с Java для проекта на работе.Мне нужно экспортировать значение в файл Excel.Я могу записать в файл Excel, но не могу экспортировать конкретное значение в файл Excel.

Вот процесс автоматизации для получения значения:

public void AbbeyNational (String AbbeyNationalURL, String AN_AccCookiesButton, String AN_MortgageTabButton, String AN_ExistingCustomerButton, String AN_FollowRateButton, String AN_SVRButton, String AN_RateFld)throws InterruptedException {

    driver.get(AbbeyNationalURL);
    driver.findElement(By.xpath(AN_AccCookiesButton)).click();
    driver.findElement(By.linkText(AN_MortgageTabButton)).click();
    driver.findElement(By.xpath(AN_ExistingCustomerButton)).click();
    driver.findElement(By.xpath(AN_FollowRateButton)).click();
    driver.findElement(By.xpath(AN_SVRButton)).click();
    String a = driver.findElement(By.cssSelector(AN_RateFld)).getText();
    String AN_Rate = a.substring(54,58);
    System.out.println(AN_Rate);
}

'AN_Rateпеременная содержит значение после автоматизации.Значение выводится на консоль, но мне нужно, чтобы значение было экспортировано в файл Excel с использованием автоматизации.Может ли кто-нибудь помочь мне с этим?

Кроме того, вот мой код для записи в файл Excel:

public void writeToExcel(String AN_Rate) throws IOException{
    File file = new File(filePath+"\\"+fileName);
    XSSFWorkbook IRWorkbook = new XSSFWorkbook();
    XSSFSheet Sheet0 = IRWorkbook.createSheet();
    Sheet0.createRow(0).createCell(0).setCellValue(AN_Rate);
    try {
        FileOutputStream fos = new FileOutputStream(file);
        IRWorkbook.write(fos);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Вы можете использовать этот код для большого набора данных:

public class ExcelWriter {

// LinkedHashMap to maintain the insertion order
public static Map<String, String> dataMap = new LinkedHashMap<>();
public static String filePath = "D:\\ECLIPSE-WORKSPACE\\playground\\src\\main\\resources";
public static String fileName = "demo-data";

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

    String AN_Rate = "Data-1";
    String BN_Rate = "Data-2";
    String CN_Rate = "Data-3";

    dataMap.put("AN_Rate", AN_Rate);
    dataMap.put("BN_Rate", BN_Rate);
    dataMap.put("CN_Rate", CN_Rate);

    writeToExcel(dataMap, filePath, fileName);
}

public static void writeToExcel(Map<String, String> dataMap, String filePath, String fileName) throws IOException {
    File file = new File(filePath + "\\" + fileName + ".xlsx");
    if (file.exists()) {
        file.delete();
    }
    file.createNewFile();
    XSSFWorkbook IRWorkbook = new XSSFWorkbook();
    XSSFSheet sheet = IRWorkbook.createSheet();
    List<String> headers = dataMap.keySet().stream().collect(Collectors.toList()); // all key values in a list
    List<String> data = new ArrayList<>(dataMap.values()); // all data in a list

    setHeadersAndFillData(sheet, headers, data); // filling excel sheet with headers and corresponding data

    try {
        FileOutputStream fos = new FileOutputStream(file);
        IRWorkbook.write(fos);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

public static void setHeadersAndFillData(XSSFSheet sheet, List<String> headers, List<String> data) {
    int headersSize = headers.size();
    int dataSize = headers.size();
    Row headerRow = sheet.createRow(0);
    Row dataRow = sheet.createRow(1);
    setCells(headers, headersSize, headerRow);
    setCells(data, dataSize, dataRow);
}

private static void setCells(List<String> cellData, int headersSize, Row row) {
    for (int rn = 0; rn < headersSize; rn++) {
        row.createCell(rn).setCellValue(cellData.get(rn));
    }
}

}

0 голосов
/ 14 июня 2018

Просто отредактируйте свой метод writeToExcel с помощью:

Замените: File file = new File(filePath+"\\"+fileName); с добавленным расширением файла

 File file = new File(filePath+"\\"+fileName + ".xlsx");

, и тогда значение будет экспортировано в файл Excel.

И если имеется большой набор данных, вам следует хранить все значения в статической карте, а затем экспортировать все значения в Excel сразу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...