Welche der beiden APIs ist einfacher zu lesen, zu schreiben und zu bearbeiten? Unterstützen diese APIs keine CSV-Erweiterungen?
Wenn ich JXL für file.xls und file.xlsx verwende, erhalte ich eine Ausnahme wie:
jxl.read.biff.BiffException: Unable to recognize OLE stream
at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
at jxl.read.biff.File.<init>(File.java:127)
at jxl.Workbook.getWorkbook(Workbook.java:268)
at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
at core.ReadXLSheet.init(ReadXLSheet.java:22)
at core.ReadXLSheet.main(ReadXLSheet.java:72)
Sowohl für XLS- als auch XLSX-Erweiterungen. Die von mir verwendete Java-Version lautet: JDK1.6
java
excel
apache-poi
jxl
Swagatika
quelle
quelle
Antworten:
Ich habe sowohl JXL (jetzt "JExcel") als auch Apache POI verwendet . Zuerst habe ich JXL verwendet, jetzt verwende ich Apache POI.
Hier sind die Dinge, bei denen beide APIs dieselbe Endfunktionalität haben:
Es gibt jedoch viele Unterschiede:
Darüber hinaus enthält POI nicht nur die Haupt-API "usermodel", sondern auch eine ereignisbasierte API, wenn Sie nur den Tabelleninhalt lesen möchten.
Zusammenfassend kann ich sagen, dass ich aufgrund der besseren Dokumentation, der größeren Funktionen, der aktiven Entwicklung und der Unterstützung des Excel 2007+ -Formats Apache POI verwende.
quelle
getContents()
Methode in JExcelAPI spart mir viel Zeit. Bei POI müssen Sie den Zelltyp überprüfen und dann den Wert (wenn es sich um eine numerische Zelle handelt, müssen Sie überprüfen, ob es sich um eine Datumszelle handelt) entsprechend dem Typ abrufen und ihn schließlich mit verschiedenen Methoden in einen String-Wert konvertieren. Das ist so unpraktisch. Ich kann mir nicht vorstellen, dass POI keine so schmutzige, aber bequeme Methode bietet wie JExcelAPI.Ich habe POI verwendet.
Wenn Sie dies verwenden, behalten Sie diese Zellenformatierer im Auge: Erstellen Sie einen und verwenden Sie ihn mehrmals, anstatt jedes Mal für eine Zelle zu erstellen. Dies ist ein großer Unterschied im Speicherverbrauch oder große Datenmengen.
quelle
Ich bin mit JXL nicht vertraut und wir verwenden POI. Der POI ist gut gepflegt und kann sowohl das binäre XLS-Format als auch das neue XML-basierte Format verarbeiten, das in Office 2007 eingeführt wurde.
CSV-Dateien sind keine Excel-Dateien, sondern textbasierte Dateien, sodass diese Bibliotheken sie nicht lesen. Sie müssen eine CSV-Datei selbst analysieren. Mir sind keine CSV-Dateibibliotheken bekannt, aber ich habe auch nicht nachgesehen.
quelle
Zum Lesen von "einfachen" CSV-Dateien in Java gibt es eine Bibliothek namens OpenCSV, die hier verfügbar ist: http://opencsv.sourceforge.net/
quelle