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
immagino che si sta utilizzando cartella di lavoro in fabbrica o un diverso file di input in formato e diverso tipo di cartella di lavoro. Questo errore di solito si apre quando non è in grado di non leggere il tipo di file. Il POI di Apache non controlla l'estensione del file. Se lo apri in un editor di testo, vedrai che sarà in un formato diverso. Oppure è possibile inizializzare il tipo di cartella di lavoro su HSSF o XSSF, prima di utilizzare Workbook Factory.
Più semplice soluzione è quella di aprire il file utilizzando Microsoft Excel e salvarlo come un altro file (utilizzando File> Salva Come opzione da Microsoft Excel > Menu).
Workbook Factory non controlla l'estensione del file, ma controlla il tipo MIME del file. In sostanza, Excel funziona con file diversi (ad esempio: i file creati con applicazioni di terze parti, versione Excel 2003), ma il POI di Apache è molto specifico.
PushbackInputStream
aggiunge la funzionalità "respingi" o "non letto" a un altro flusso di input. Ti permette di leggere in anticipo alcuni byte per vedere cosa sta arrivando, prima di poter determinare come interpretare il byte corrente.
Se non si utilizza Workbook Factory, PushbackInputStream
è l'unica alternativa immagino.
Se è possibile condividere il codice qui posso verificarlo e riconfermarlo.
fonte
2014-04-23 07:56:08
Sei sicuro che il tuo file sia davvero un file .xls di Excel? E non, ad esempio, un file .csv o .html con l'estensione modificata? – Gagravarr
No, è un file .xls di Excel. – mee
Si prega di fornire il vostro SSCCE. –