Невозможно прочитать Excel, используя Apache POI - PullRequest
2 голосов
/ 22 мая 2019

Я читаю в Excel, используя Apache POI, но он продолжает выдавать ошибку для определения класса XSSFWorkbook обнаружена ошибка.Я использовал разные версии jar-библиотек Apache-poi (т.е. 4.1, 4.0 и 3.12), но ни одна из них, похоже, не исправила эту ошибку.Вот скриншот библиотек, которые в настоящее время импортированы введите описание изображения здесь Что не так внутри кода?

try {   
        File fileSrc = new File("C://Eclipse-Workspace//TestData//TestDataSet.xlsx");
            FileInputStream fis = new FileInputStream(fileSrc); 
            XSSFWorkbook workbook = new XSSFWorkbook(fis);
            XSSFSheet sheet = workbook.getSheetAt(0);
        XSSFCell cellData = sheet.getRow(rowNo).getCell(colNo);
workbook.close();
return cellData.toString();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }

Отображается ошибка:

 java.lang.NoClassDefFoundError: 
    org/apache/poi/ss/usermodel/WorkbookFactory
    at Utilities.DataAccessorExcel.excelReader(DataAccessorExcel.java:33)
    at TestCases.LoginTest.verifyLogin(LoginTest.java:66)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
    Method)
    atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMe 
    thodAccessorImpl.java:62)
    atjava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Dele 
    gatingMethodAccessorImpl.java:43)at 
    java.base/java.lang.reflect.Method.invoke(Method.java:567)

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Вы должны включить файл poi jar.Это будет версия 4.1.0.Если вы используете Maven pom.xml, включите следующую зависимость.

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.0</version>
        </dependency>

Если вы не используете Maven, загрузите файлы JAR из следующих мест:

http://central.maven.org/maven2/org/apache/poi/poi/4.1.0/poi-4.1.0.jar

http://central.maven.org/maven2/org/apache/poi/poi-ooxml/4.1.0/poi-ooxml-4.1.0.jar

Для чтения файла Excel с Apache POI вам понадобятся следующие файлы jar, если вы не хотите использовать Maven.

  1. poi-ooxml-4.1.0.jar
  2. poi-ooxml-schemas-4.1.0.jar
  3. xmlbeans-3.1.0.jar
  4. commons-compress-1.18.jar
  5. curveapi-1.06.jar
  6. poi-4.1.0.jar
  7. commons-codec-1.12.jar
  8. commons-collection4-4.3.jar
  9. commons-math3-3.6.1.jar

Ниже приведен краткий фрагмент кода о том, как его использовать.

FileInputStream file =
        new FileInputStream(
            new File(
                "testdata\\TestData_01.xlsx"));
    XSSFWorkbook workbook = new XSSFWorkbook(file);
    XSSFSheet sheet = workbook.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.iterator();

    while (rowIterator.hasNext()) {
      Row row = rowIterator.next();
      Cell cell0 = row.getCell(0);
      if (cell0 != null) {
        System.out.println("First Column Data : "+cell0.getStringCellValue());
      }
      Cell cell1 = row.getCell(1);
      if (cell1 != null) System.out.println("Second Column Data : "+cell1.getStringCellValue());


    }
0 голосов
/ 22 мая 2019

Я снова создал проект и поместил библиотеки POI в ClassPath, но обнаружил, что библиотеки POI были добавлены как ModulePath, а не в ClassPath.Во всяком случае, я пробовал это раньше, я начал создавать новый проект.И переместил testng.xml на уровень папки src.Работает нормально, как и ожидалось.

...