Your InputStream was neither an OLE2 stream, nor an OOXML stream
java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
Ich denke, man Arbeitsmappe Fabrik oder eine andere Format Eingabedatei und anderen Arbeitsmappe Typen verwenden. Dieser Fehler tritt normalerweise auf, wenn er den Dateityp nicht lesen kann. Apache POI überprüft die Dateierweiterung nicht. Wenn Sie es in einem Texteditor öffnen, sehen Sie stattdessen, dass es in einem anderen Format vorliegt. Oder Sie initialisieren den Arbeitsmappentyp auf HSSF oder XSSF, bevor Sie Workbook Factory verwenden.
Einfachere Lösung ist die Datei mit Microsoft Excel zu öffnen und als eine andere Datei speichern (mit Datei> Speichern Als Option von Microsoft Excel > Menü).
Workbook Factory überprüft nicht die Dateierweiterung, sondern prüft den MIME-Typ der Datei. Grundsätzlich funktioniert Excel mit verschiedenen Dateien (zB: Dateien, die mit Drittanbieter-Anwendungen erstellt wurden, Version 2003), aber Apache POI ist sehr spezifisch.
PushbackInputStream
fügt "Push-Back" oder "Ungelesen" -Funktionalität zu einem anderen Eingabestrom hinzu. Sie können einige Bytes vorlesen, um zu sehen, was kommt, bevor Sie bestimmen können, wie das aktuelle Byte zu interpretieren ist.
Wenn Sie nicht Workbook Factory verwenden, ist PushbackInputStream
die einzige Alternative, denke ich.
Wenn Sie den Code hier teilen können, kann ich es testen und erneut bestätigen.
Sind Sie sicher, dass Ihre Datei wirklich eine .xls-Excel-Datei ist? Und nicht etwa eine .csv oder .html Datei mit der Erweiterung geändert? – Gagravarr
Nein, es ist eine Excel-Datei .xls. – mee
Bitte geben Sie Ihren SSCCE an. –