2012-04-18 33 views
5

Tôi cần trợ giúp đọc tệp xls bằng cách sử dụng apache XSSF.Cần trợ giúp cho apache poi đọc xls với XSSF

Việc triển khai XSSF hoạt động tốt cho "xlsx". Không hoạt động đối với các tệp "xls".

Đây là mã:

XSSFWorkbook workBook = new XSSFWorkbook("fileName"); 
    XSSFSheet sheet = workBook.getSheetAt(0); 
    XSSFRow row = sheet.getRow(0); 

Bất kỳ workaround được đánh giá cao.

+0

Bạn hãy thử đọc [Apache POI QuickGuide] (http://poi.apache.org/ spreadsheet/how-to.html # user_api)? Nó cho bạn thấy làm thế nào để đọc và viết cả hai tập tin XSSF và HSSF với mã cơ bản giống hệt nhau – Gagravarr

+0

Cảm ơn bạn đã phát lại u r. Có, tôi có thể làm riêng cho .xml HSSF và cho .xlsx XSSF. Nhưng liệu có cách nào chúng ta có thể đạt được cả hai là với thực hiện đơn? –

Trả lời

9

Thay vì sử dụng các lớp học XSSF trực tiếp, bạn nên sử dụng các giao diện được phổ biến giữa hai HSSF (.xls) và XSSF (.xlsx). Đoạn mã từ câu hỏi của bạn sau đó sẽ trở thành:

Workbook wb = WorkbookFactory.create(file); // Or InputStream 
Sheet sheet = workBook.getSheetAt(0); 
Row row = sheet.getRow(0); 
Cell cell = row.getCell(0); 
System.out.println("Cell A1 is of type " + cell.getCellType()); 

Xem Apache POI QuickGuide để biết thêm thông tin và ví dụ

+0

điều này dường như không hoạt động với xlsx. Bất cứ khi nào tôi cố gắng tải lên một tệp excel ở định dạng đó, tôi nhận được một lỗi phản chiếu lạ: java.lang.reflect.InvocationTargetException. Tôi đang lưu trữ các hàng mà tôi nhận được từ tệp excel trong một vectơ, sau đó truyền vectơ đó đến một hàm khác. Khi tôi ở trong hàm đó, vectơ luôn trống với một tệp XLSX, nhưng nó có giá trị đúng với các tệp XLS. – berto77

+0

Ngoài ra, liên kết đó không demonstarte xssf. Chỉ hssf. – berto77

+0

Nó - mã có hoạt động giống hệt nhau cho cả HSSF và XSSF, nó chỉ phụ thuộc vào loại sổ làm việc mà bạn nạp ở trên cùng. Nếu bạn gặp sự cố, hãy đặt câu hỏi mới và đăng toàn bộ ngăn xếp # – Gagravarr

Các vấn đề liên quan