Apache POI, utilisant à la fois XSSF et HSSF
-
27-09-2019 - |
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?
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);