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
Chyba używasz skoroszytu fabryki lub innego formatu pliku wejściowego i innego rodzaju plików. Ten błąd zwykle pojawia się, gdy nie jest w stanie odczytać tego typu pliku. Apache POI nie sprawdza rozszerzenia pliku. Jeśli otworzysz go w edytorze tekstowym, zobaczysz, że będzie on w innym formacie. Lub możesz zainicjować typ skoroszytu do HSSF lub XSSF, przed użyciem Workbook Factory.
Prostsze rozwiązanie jest, aby otworzyć plik za pomocą programu Microsoft Excel i zapisać go jako innego pliku (przy użyciu Plik> Zapisz Jako opcja z Microsoft Excel > Menu).
Skoroszyt Fabryka nie sprawdza rozszerzenia pliku, zamiast tego sprawdza typ MIME pliku. Zasadniczo excel działa z różnymi plikami (np. Pliki utworzone za pomocą aplikacji firm trzecich, wersja excel 2003), ale Apache POI jest bardzo specyficzny.
PushbackInputStream
dodaje funkcję "wypychania" lub "nieprzeczytania" do innego strumienia wejściowego. Pozwala ci przeczytać przed sobą kilka bajtów, aby zobaczyć, co nadchodzi, zanim będziesz mógł określić, jak interpretować bieżący bajt.
Jeśli nie używasz Workbook Factory, PushbackInputStream
jest jedyną alternatywą, jak sądzę.
Jeśli możesz udostępnić kod tutaj, mogę go przetestować i potwierdzić ponownie.
Czy jesteś pewien, że plik rzeczywiście jest plikiem .xls programu Excel? I nie, powiedzmy, zmieniono plik .csv lub .html z rozszerzeniem? – Gagravarr
Nie, jest to plik .xls w formacie Excel. – mee
Proszę podać swoją SSCCE. –