Tôi đang sử dụng thư viện Apache POI 3.8 để đọc tệp XLSX trong ứng dụng web. Các mã sau đây làm việc hoàn toàn tốt đẹp từ một giao diện điều khiển ứng dụng Java:Lỗi khi đọc Excel .XLSX với Apache POI
InputStream inputFS = new FileInputStream("test.xlsx");
Workbook workbook = new XSSFWorkbook(inputFS); // below exception is thrown on this line
Sheet sheet = workbook.getSheetAt(0);
nhưng ném một "đọc lỗi" khi được sử dụng trong các ứng dụng web. Một chiết xuất có liên quan của stack trace được dán bên dưới:
java.io.IOException: Read error
at java.io.FileInputStream.readBytes(Native Method) ~[na:1.6.0_31]
at java.io.FileInputStream.read(Unknown Source) ~[na:1.6.0_31]
at java.io.FilterInputStream.read(Unknown Source) ~[na:1.6.0_31]
at java.io.PushbackInputStream.read(Unknown Source) ~[na:1.6.0_31]
at java.util.zip.ZipInputStream.readFully(Unknown Source) ~[na:1.6.0_31]
at java.util.zip.ZipInputStream.readLOC(Unknown Source) ~[na:1.6.0_31]
at java.util.zip.ZipInputStream.getNextEntry(Unknown Source) ~[na:1.6.0_31]
at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStreamZipEntrySource.java:51) ~[poi-ooxml-3.8-20120326.jar:3.8]
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:83) ~[poi-ooxml-3.8-20120326.jar:3.8]
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:228) ~[poi-ooxml-3.8-20120326.jar:3.8]
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39) ~[poi-ooxml-3.8-20120326.jar:3.8]
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:187) ~[poi-ooxml-3.8-20120326.jar:3.8]
at com.corp.ReportManager.parseExcelReport(ReportManager.java:575) [ReportManager.class:na]
Các lọ sau đây được bao gồm trong classpath (theo thứ tự):
poi-3.8-20120326.jar
poi-ooxml-3.8-20120326.jar
poi-ooxml-schemas-3.8-20120326.jar
xbean.jar
dom4j-1.6.1.jar
Hiện không có vẻ là một vấn đề bộ nhớ liên quan kể từ khi tôi thu thập một số thống kê sử dụng heap ngay trước khi gọi mã trên. Tệp XLSX có kích thước 1,15 MB.
##### Heap utilization statistics [MB] #####
Used Memory:13 MB
Free Memory:9 MB
Total Memory:23 MB
Max Memory:247 MB
có thể xem ứng dụng web của bạn/sửa đổi các tập tin của bạn đọc từ đâu? –
Ứng dụng web có quyền truy cập vào tệp, nếu đó là những gì bạn đang yêu cầu. Nó chỉ đọc (không sửa đổi). Trên một lưu ý liên quan, ứng dụng web xử lý các tệp XLS (định dạng nhị phân cũ hơn) mà không có vấn đề. Nó chỉ với các tập tin XLSX mà nó chạy vào một vấn đề. –
có bất kỳ tính năng mới nào đang được sử dụng mà nó không hỗ trợ không? http://poi.apache.org/spreadsheet/index.html –