web-dev-qa-db-fra.com

Impossible d'importer XSSF dans un POI Apache

Je fais référence à la version 3.7 du POI Apache et le message d'erreur "Impossible à résoudre" s'affiche lorsque je le fais:

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

Les autres instructions d'importation faisant référence à POI NE PAS me donnent des erreurs, telles que:

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

Des idées??

105
Mark Jackson

Pour que OOXML fonctionne, vous avez besoin du fichier jar POI-OOXML qui est emballé séparément à partir du fichier jar POI.

Téléchargez le fichier jar POI-OOXML à l’emplacement suivant -

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

Pour Maven2, ajoutez la dépendance ci-dessous -

<dependency>
    <groupId>org.Apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.11</version>
</dependency>
172
Pushkar

Les classes pour les formats de fichier OOXML (tels que XSSF pour .xlsx) se trouvent dans un fichier Jar différent. Vous devez inclure le pot poi-ooxml dans votre projet, ainsi que ses dépendances.

Vous pouvez obtenir une liste de tous les composants et de leurs dépendances sur le site Web des POI ici .

Ce que vous voulez probablement faire, c'est télécharger le paquet binaire 3.11 , et récupérer le fichier jar poi-ooxml, ainsi que les dépendances dans le répertoire ooxml-lib. Importez-les dans votre projet et vous serez triés. 

Alternativement, si vous utilisez Maven, vous pouvez voir ici pour la liste des artificats sur lesquels vous voudrez compter, mais cela voudrait être quelque chose comme:

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

La dépendance poi-ooxml maven récupérera automatiquement le fichier JAR principal et les dépendances. Si vous souhaitez utiliser des formats autres que des feuilles de calcul, vous devez également vous fier également à l'artefact poi-scratchpad, comme indiqué à la page Composants POI

30
Gagravarr

Si vous utilisez Maven:

poi => poi-ooxml dans artifactId

    <dependency>
        <groupId>org.Apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.12</version>
    </dependency>
7
sgrillon

Problème: lors de l'importation de la classe "org.Apache.poi.xssf.usermodel.XSSFWorkbook" indiquant une erreur dans Eclipse.

Solution: utilisez cette dépendance maven pour résoudre ce problème:

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

-Hari Krishna Neela

6

J'ai ajouté ci-dessous le contenu de l'application "build.gradle"

implementation 'org.Apache.poi:poi:4.0.0'
implementation 'org.Apache.poi:poi-ooxml:4.0.0'
2
Dang Thach Hai

1) importé tous les JARS du dossier POI 2) importé de tous les JARS du dossier ooxml contenant un sous-répertoire du dossier POI 3) importé de tous les JARS du dossier lib qui est un sous-répertoire du dossier 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();
}​
2
Aman Khatri

J'ai eu le même problème, donc j'ai creusé dans le fichier poi-3.17.jar et il n'y avait pas de paquet xssf à l'intérieur.

J'ai ensuite examiné les autres fichiers et trouvé xssf int dans le répertoire poi-ooxml-3.17.jar.

Il semble donc que la solution consiste à ajouter

poi-ooxml-3.17.jar

à votre projet, car cela semble le faire fonctionner (du moins pour moi)

1
Mr Redstoner

De toute façon, vous n’avez pas décrit l’environnement, vous devriez télécharger les bibliothèques de poi Apache. Si vous utilisez Eclipse, cliquez avec le bouton droit sur votre projet racine. Ainsi, les propriétés et le chemin de génération Java ajoutent un fichier JAR externe et importent dans votre projet les bibliothèques suivantes: 

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

0
frank

J'avais besoin des fichiers suivants pour mon implémentation:

  • poi-ooxml-schemas-3.14.20160307.jar
  • commons-codec-1.10.jar (c'était dans le dossier "lib" du fichier Zip que vous avez obtenu d'Apache)
  • curvepsi-1.03.jar (dans le dossier "ooxml-lib")
  • poi-3.14-20160307.jar
  • poi-ooxml-3.14-20160307.jar
  • xmlbeans-2.6.0.jar (dans le dossier "ooxml-lib")

(Bien que honnêtement, je ne suis pas complètement sûr qu'ils soient tous nécessaires ...) C'est un peu déroutant car ils sont emballés de cette façon. Je devais les placer manuellement dans mon propre dossier "lib", puis ajouter les références ...

Maven semble toujours télécharger plus que ce dont j'ai besoin, aussi je place toujours manuellement libaries/dlls, etc.

0
pcalkins

Après avoir essayé plusieurs choses, ce qui a vraiment fonctionné a été de: 1. télécharger manuellement "poi" et "poi-ooxml" 2. ajouter ces bocaux d/w en "Dépendances Maven"

0
Sanchi Tyagi