Ich lese eine Excel-Datei auf meinem lokalen System. Ich verwende POI jar Version 3.7, bekomme aber Fehler Ungültige Header-Signatur; lesen Sie -2300849302551019537 oder in Hex 0xE011BDBFEFDBDBFEF, erwartet -2226271756974174256 oder in Hex 0xE11AB1A1E011CFD0.
Das Öffnen der xls-Datei mit Excel funktioniert einwandfrei.
Der Codeblock wo es passiert: Jemand eine Idee?
%Vor%Diese Ausnahme sagt Ihnen, dass Ihre Datei keine gültige OLE2-basierte .xls-Datei ist.
Die Datei in Excel öffnen zu können, ist kein wirklicher Leitfaden - Excel öffnet alle Dateien, die es kennt, unabhängig davon, um welche Erweiterung es sich handelt. Wenn Sie eine .csv-Datei verwenden und sie in .xls umbenennen, wird Excel sie zwar öffnen, aber die Umbenennung hat es nicht magisch im .xls-Format gemacht, so dass POI es nicht für Sie öffnet.
Wenn Sie die Datei in Excel öffnen und Speichern unter ausführen, können Sie sie als echte Excel-Datei ausgeben. Wenn Sie wissen wollen, welche Datei es wirklich ist, versuchen Sie Apache Tika - das Tika CLI mit --detect
sollte in der Lage sein zu sagen du
.
Wie kann ich sicher sein, dass es keine gültige Datei ist? Wenn Sie sich das OLE2-Dateiformatspezifikationsdokument von Microsoft ansehen, gehen Sie zu Abschnitt 2.2 sehen Sie Folgendes:
Kopfsignatur (8 Bytes): Identifikationssignatur für die zusammengesetzte Dateistruktur, und MUSS auf den Wert 0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1 gesetzt werden.
Flip diese Bytes Runde (OLE2 ist Little Endian) und Sie erhalten 0xE11AB1A1E011CFD0, die magische Zahl von der Ausnahme. Ihre Datei beginnt nicht mit dieser magischen Zahl, da dies wirklich kein gültiges OLE2-Dokument ist, und daher gibt POI Ihnen diese Ausnahme.
Tags und Links java excel apache-poi xls