Apache POI, unter Verwendung von sowohl XSSF und HSSF
-
27-09-2019 - |
Frage
Ich habe ein Problem mit Apache POI-Projekt.
konnte ich auf den Einsatz XSSF
und HSSF
in der "Same Java Class" . Welches Glas muss ich herunterladen oder welche Artefakt sollte ich hinzufügen, erhalten in Maven?
Ich möchte beide xls
und xlsx
Dateien gleichzeitig zu handhaben. Wenn ich Excel-Version Fehler, ich ändert sich die XSSF zu HSSF oder HSSF zu XSSF .
Wie kann ich das tun?
Lösung
Statt das zu tun, versuchen Sie die neue Version von Apache POI mit 3,7, hat es SS-Paket, das sowohl HSSF und XSSF behandelt, ohne sich um Typ sich Gedanken
Details hier: http://poi.apache.org/spreadsheet/index.html
Andere Tipps
Neben der „Standard“ SS Paketlösung, können Sie auch einfach eine if statement
verwenden, um richtig das Recht workbook format
in ein Workbook interface
Objekt zu laden, etwa so:
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.");
}
Verwenden Sie die Fabrik statt, die beide Griffe xssf und HSSF
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
Workbook wb = WorkbookFactory.create(new File("file"))
Das ist für mich gearbeitet:
filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
String extension = FilenameUtils.getExtension(filePath);
System.out.println(extension);