Question

J'ai un problème avec le projet Apache POI.

Je ne pouvait pas utiliser XSSF et HSSF dans le "même classe Java" . Quelle pot dois-je télécharger ou qui artefact dois-je faire ajouter dans maven?

Je veux gérer les fichiers xls et xlsx en même temps. Quand je reçois excel erreur de version, je changerai le XSSF à HSSF ou HSSF à XSSF .

Comment puis-je faire?

Était-ce utile?

La solution

Au lieu de le faire, essayez d'utiliser la nouvelle version de POI Apache 3.7, il a package SS qui gère sans se soucier de type à la fois HSSF et XSSF

Détails ici: http://poi.apache.org/spreadsheet/index.html

Autres conseils

En plus de la solution paquet SS « standard », vous pouvez également utiliser simplement un if statement pour charger correctement le droit workbook format dans un objet Workbook interface, comme suit:

Workbook workbook; //<-Interface, accepts both HSSF and XSSF.
File file = new File("YourExcelFile.xlsx");
if (FileUtils.getFileExt(file).equalsIgnoreCase("xls")) {
  workbook = new HSSFWorkbook(new FileInputStream(file));
} else if (FileUtils.getFileExt(file).equalsIgnoreCase("xlsx")) {
  workbook = new XSSFWorkbook(new FileInputStream(file));
} else {
  throw new IllegalArgumentException("Received file does not have a standard excel extension.");
}

Utilisez l'usine à la place qui gère à la fois xssf et HSSF

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

Workbook wb = WorkbookFactory.create(new File("file"))

Cela a fonctionné pour moi:

    filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
    String extension = FilenameUtils.getExtension(filePath);
    System.out.println(extension);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top