Невозможно импортировать XSSF в Apache POI

Я ссылаюсь на версию 3.7 Apache POI, и я получаю ошибку "не могу быть разрешен", когда я это делаю:

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

Другие операторы импорта, которые ссылаются на POI, не дают мне ошибок, например:

import org.apache.poi.ss.usermodel.*;

Любые идеи?

Ответ 1

Для работы OOXML вам понадобится банкомат POI-OOXML, который отдельно упакован из банка POI.

Загрузите банку POI-OOXML из следующего местоположения -

http://repo1.maven.org/maven2/org/apache/poi/poi-ooxml/3.11/poi-ooxml-3.11.jar

Для Maven2 добавьте следующую зависимость -

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.11</version>
</dependency>

Ответ 2

Классы для форматов файлов OOXML (например, XSSF для .xlsx) находятся в другом файле Jar. Вам нужно включить баннер poi-ooxml в свой проект вместе с зависимостями для него

Вы можете получить список всех компонентов и их зависимостей на веб-сайте POI здесь.

Что вы, вероятно, захотите сделать, это загрузить 3.11 бинарный пакет, извлечь из него банку poi-ooxml и зависимости в ooxml-lib. Импортируйте их в свой проект, и вы будете отсортированы.

В качестве альтернативы, если вы используете Maven, вы можете посмотреть здесь для списка искусств, на которые вы хотите зависеть, d хотите быть чем-то вроде:

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.11</version>
</dependency>

Взаимосвязь poi-ooxml maven будет автоматически загружаться в основную банку POI и зависимости. Если вы хотите работать с форматами без электронных таблиц, вы также захотите зависеть от артефакта poi-scratchpad, как описано на странице компонентов POI

Ответ 3

Если вы используете Maven:

poi = > poi-ooxml в artifactId

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.12</version>
    </dependency>

Ответ 4

Проблема: при импорте класса org.apache.poi.xssf.usermodel.XSSFWorkbook, показывающего ошибку в eclipse.

Решение. Используйте эту зависимость maven для решения этой проблемы:

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.15</version>
</dependency>

-Хари Кришна Нила

Ответ 5

1) импортировал все JARS из папки POI 2) Импортировал все JARS из папки ooxml, которая является подкаталогом папки POI 3) Импортировал все JARS из папки lib, которая является подкаталогом папки POI.

String fileName = "C:/File raw.xlsx";
File file = new File(fileName);
FileInputStream fileInputStream;
Workbook workbook = null;
Sheet sheet;
Iterator<Row> rowIterator;
try {
        fileInputStream = new FileInputStream(file);
        String fileExtension = fileName.substring(fileName.indexOf("."));
        System.out.println(fileExtension);
        if(fileExtension.equals(".xls")){
        workbook  = new HSSFWorkbook(new POIFSFileSystem(fileInputStream));
        }
        else if(fileExtension.equals(".xlsx")){
        workbook  = new XSSFWorkbook(fileInputStream);
        }
        else {
        System.out.println("Wrong File Type");
        } 
        FormulaEvaluator evaluator workbook.getCreationHelper().createFormulaEvaluator();
        sheet = workbook.getSheetAt(0);
        rowIterator = sheet.iterator();
        while(rowIterator.hasNext()){
        Row row = rowIterator.next();
        Iterator<Cell> cellIterator = row.cellIterator();
        while (cellIterator.hasNext()){
        Cell cell = cellIterator.next();
        //Check the cell type after evaluating formulae
       //If it is formula cell, it will be evaluated otherwise no change will happen
        switch (evaluator.evaluateInCell(cell).getCellType()){
        case Cell.CELL_TYPE_NUMERIC:
        System.out.print(cell.getNumericCellValue() + " ");
        break;
        case Cell.CELL_TYPE_STRING:
        System.out.print(cell.getStringCellValue() + " ");
        break;
        case Cell.CELL_TYPE_FORMULA:
        Not again
        break;
        case Cell.CELL_TYPE_BLANK:
        break;
        }
}
 System.out.println("\n");
}
//System.out.println(sheet);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}​

Ответ 6

Вы не описали среду, так или иначе, вы должны скачать библиотеки apache poi. Если вы используете eclipse, щелкните правой кнопкой мыши на своем корневом проекте, поэтому свойства и путь сборки java добавят внешний баннер и импортируют в ваш проект эти библиотеки:

xmlbeans-2.6.0; poi-ooxml-schemas-...; poi-ooxml-...; poi-....;

Ответ 7

Мне нужны следующие файлы для моей реализации:

  • пои-OOXML-схема-3.14.20160307.jar
  • commons-codec-1.10.jar(это было в папке "lib" zip файла, который вы получить от apache)
  • curvesapi-1.03.jar(в папке "ooxml-lib" )
  • пои-3.14-20160307.jar
  • пои-OOXML-3.14-20160307.jar
  • xmlbeans-2.6.0.jar(в папке "ooxml-lib" )

(хотя, честно говоря, я не совсем уверен, что они все необходимы...) Это немного запутанно, потому что они упакованы таким образом. Мне нужно было разместить их вручную в моей собственной папке "lib", а затем добавить ссылки...

Maven всегда, кажется, загружает больше, чем мне нужно, поэтому я всегда размещаю libaries/dll и все такое, что было бы вручную.