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
Tôi đoán bạn đang sử dụng Workbook Factory HOẶC một tập tin định dạng đầu vào khác nhau và loại bảng tính khác nhau. Lỗi này thường xuất hiện khi không thể đọc được loại tệp. Apache POI không kiểm tra phần mở rộng của tệp. Nếu bạn mở nó trong một trình soạn thảo văn bản, bạn sẽ thấy rằng thay vào đó nó sẽ ở định dạng khác. Hoặc bạn có thể đang khởi tạo loại sổ làm việc thành HSSF hoặc XSSF, trước khi sử dụng Workbook Factory.
đơn giản là giải pháp để mở tập tin sử dụng Microsoft Excel và lưu nó như một tập tin khác (sử dụng File> Save Như tùy chọn từ Microsoft Excel> Menu).
Workbook Factory không kiểm tra phần mở rộng của tệp, Thay vào đó nó sẽ kiểm tra loại tệp MIME. Về cơ bản, Excel hoạt động với các tệp khác nhau (ví dụ: các tệp được tạo bằng các ứng dụng của bên thứ ba, phiên bản excel 2003), nhưng Apache POI rất cụ thể.
PushbackInputStream
thêm chức năng "đẩy lùi" hoặc "chưa đọc" vào luồng đầu vào khác. Nó cho phép bạn đọc trước một vài byte để xem những gì đang đến, trước khi bạn có thể xác định cách diễn giải byte hiện tại.
Nếu bạn không sử dụng Workbook Factory, PushbackInputStream
là lựa chọn duy nhất tôi đoán.
Nếu bạn có thể chia sẻ mã ở đây, tôi có thể kiểm tra và xác nhận lại mã đó.
Nguồn
2014-04-23 07:56:08
Bạn có chắc tệp của mình thực sự là tệp .xls của Excel không? Và không phải, giả sử, tệp .csv hoặc .html có phần mở rộng đã thay đổi chưa? – Gagravarr
Không, tệp .xls của Excel. – mee
Vui lòng cung cấp SSCCE của bạn. –