Получение исключения «Файл не найден» при извлечении данных из файла xlsx

#selenium-webdriver #automation #apache-poi

Вопрос:

У меня есть 3 листа в моем файле Excel. Я пытаюсь извлечь данные с помощью аннотации @dataProvider TestNG.В методе getTestData() я передаю имя листа. Через FileInputStream считываем путь к файлу. Даже если я печатаю путь к файлу, он отображается правильно. Печать пути сборки как — C:UsersGaurav Пратап Singheclipse-workspaceSampleTestFrameworkGPSsrcmainjavacomcrmqatestDataFreeCRMTestData.xlsx. Единственной проблемой может быть пробел в имени каталога. Но у меня есть еще один файл, т. е. config.properties, который отлично загружается из того же каталога.

 package com.crm.qa.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import com.crm.qa.base.TestBase;

public class TestUtil extends TestBase {



    public static String TESTDATA_SHEET_PATH = System.getProperty("user.dir")
      "\src\main\java\com\crm\qa\testData\FreeCRMTestData.xlsx";
    
    public static Workbook book;
    public static Sheet sheet;

    public static Object[][] getTestData(String sheetName){
        FileInputStream fis = null;

        try {
            fis = new FileInputStream(new File(TESTDATA_SHEET_PATH));
            // File Path printing perfectly
            System.out.println("Sheet path "   TESTDATA_SHEET_PATH);
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        System.out.println("Sheet path "   TESTDATA_SHEET_PATH);

        try {
            book = WorkbookFactory.create(fis);
        } catch (EncryptedDocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        sheet = book.getSheet(sheetName);

        Object[][] data = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()];

        for (int i = 0; i < sheet.getLastRowNum(); i  ) {
            for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k  ) {
                data[i][k] = sheet.getRow(i   1).getCell(k).toString();
            }
        }
        return data;

    }

}

 

Комментарии:

1. Попадается ли исключение catch (FileNotFoundException e1) ?

2. Да, @NandanA , фокус программы будет направлен на эту строку, упомянутую вами.

3. В коде нет ничего плохого. Путь, который вы проходите, я думаю, недействителен. Вы уверены, что это \src\main\java\com\crm\qa\testData\FreeCRMTestData.xlsx" правильный вариант? Можете ли вы добавить скриншот структуры проекта?

Ответ №1:

Это произошло из-за пути, в папке Гаурав Пратап Сингха есть пробелы. Я сменил диск, на котором нет свободных мест, и это сработало. Довольно странно, что я смог получить доступ к файлу config.properties из того же каталога.

Комментарии:

1. также, пожалуйста, используйте одну косую черту «/» вперед. потому что, когда мы развертываемся в Linux-машине. это не сработает на двойных косых чертах.

2. правильно, Джаянт, но я здесь использовал windows. Так что двойная косая черта появилась по умолчанию.