Ungültiger header Lesen xls-Datei

Ich lese eine excel-Datei auf meinem lokalen system. Ich bin mit POI-jar Version 3.7, aber immer Fehler Ungültige header-Signatur;
Lesen -2300849302551019537 oder in Hex 0xE011BDBFEFBDBFEF ,
erwartet -2226271756974174256 oder in Hex 0xE11AB1A1E011CFD0.

Öffnen Sie die xls-Datei mit Excel funktioniert.

Codeblock, wo es passiert:
Jemand eine Idee ?

/**
 * create a new HeaderBlockReader from an InputStream
 *
 * @param stream the source InputStream
 *
 * @exception IOException on errors or bad data
 */
public HeaderBlockReader(InputStream stream) throws IOException {
    //At this point, we don't know how big our
    // block sizes are
    //So, read the first 32 bytes to check, then
    // read the rest of the block
    byte[] blockStart = new byte[32];
    int bsCount = IOUtils.readFully(stream, blockStart);
    if(bsCount != 32) {
        throw alertShortRead(bsCount, 32);
    }

    //verify signature
    long signature = LittleEndian.getLong(blockStart, _signature_offset);

    if (signature != _signature) {
        //Is it one of the usual suspects?
        byte[] OOXML_FILE_HEADER = POIFSConstants.OOXML_FILE_HEADER;
        if(blockStart[0] == OOXML_FILE_HEADER[0] &&
            blockStart[1] == OOXML_FILE_HEADER[1] &&
            blockStart[2] == OOXML_FILE_HEADER[2] &&
            blockStart[3] == OOXML_FILE_HEADER[3]) {
            throw new OfficeXmlFileException("The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)");
        }
        if ((signature & 0xFF8FFFFFFFFFFFFFL) == 0x0010000200040009L) {
            //BIFF2 raw stream starts with BOF (sid=0x0009, size=0x0004, data=0x00t0)
            throw new IllegalArgumentException("The supplied data appears to be in BIFF2 format.  "
                    + "POI only supports BIFF8 format");
        }

        //Give a generic error
        throw new IOException("Invalid header signature; read "
                              + longToHex(signature) + ", expected "
                              + longToHex(_signature));
    }
  • Sie sind das werfen dieser Ausnahme aus dem code? throw new IOException? verwirrt durch Ihre Frage, die Sie sich werfen Sie die Ausnahme, und Sie Fragen, warum?
  • Die Exception geworfen wird, die von der Apache Poi Bibliothek und oben ist der code, die es wirft.
  • apache poi ist nicht werfen Sie den Fehler, dein code funktioniert throw new IOException("Invalid header-Signatur; Lesen"
  • Die HeaderBlockReader(InputStream stream) Konstruktor ist Teil der Apache POI Bibliothek. Mein code wird die vorhandene xls-Datei als stream und dann möchte ich eine neue erstellen POIFileSystem mit dieser InputStream.
InformationsquelleAutor dutchman79 | 2012-12-19
Schreibe einen Kommentar