Tôi đã sử dụng cả JXL (bây giờ là "JExcel") và Apache POI . Lúc đầu tôi đã sử dụng JXL, nhưng bây giờ tôi sử dụng Apache POI.
Đầu tiên, đây là những điều mà cả hai API có chức năng kết thúc giống nhau:
- Cả hai đều miễn phí
- Kiểu dáng ô: căn chỉnh, hình nền (màu sắc và hoa văn), đường viền (loại và màu sắc), hỗ trợ phông chữ (tên phông chữ, màu sắc, kích thước, đậm, in nghiêng, gạch ngang, gạch chân)
- Công thức
- Siêu liên kết
- Vùng tế bào hợp nhất
- Kích thước của hàng và cột
- Định dạng dữ liệu: Số và ngày
- Gói văn bản trong các ô
- Panes đóng băng
- Hỗ trợ tiêu đề / chân trang
- Đọc / ghi bảng tính hiện có và mới
- Cả hai đều cố gắng giữ các đối tượng hiện có trong bảng tính mà họ đọc còn nguyên vẹn nhất có thể.
Tuy nhiên, có nhiều điểm khác biệt:
- Có lẽ sự khác biệt đáng kể nhất là Java JXL không hỗ trợ định dạng ".xlsx" của Excel 2007+; nó chỉ hỗ trợ định dạng ".xls" BIFF (nhị phân) cũ. Apache POI hỗ trợ cả hai với một thiết kế chung.
- Ngoài ra, phần Java của API JXL được cập nhật lần cuối vào năm 2009 (3 năm, 4 tháng trước khi tôi viết bài này), mặc dù có vẻ như có API C #. Apache POI được duy trì tích cực.
- JXL không hỗ trợ Định dạng có điều kiện, Apache POI thực hiện, mặc dù điều này không đáng kể, bởi vì bạn có thể định dạng có điều kiện các ô bằng mã của riêng bạn.
- JXL không hỗ trợ định dạng văn bản phong phú , nghĩa là định dạng khác nhau trong một chuỗi văn bản; Apache POI không hỗ trợ nó.
- JXL chỉ hỗ trợ các xoay văn bản nhất định: ngang / dọc, +/- 45 độ và xếp chồng lên nhau; Apache POI hỗ trợ bất kỳ số nguyên độ cộng với xếp chồng.
- JXL không hỗ trợ vẽ hình; Apache POI nào.
- JXL hỗ trợ hầu hết các cài đặt Thiết lập trang như Phong cảnh / Chân dung, Lề, Kích thước giấy và Thu phóng. Apache POI hỗ trợ tất cả những điều đó cộng với việc lặp lại hàng và cột.
- JXL không hỗ trợ Split Panes; Apache POI nào.
- JXL không hỗ trợ tạo hoặc thao tác biểu đồ; sự hỗ trợ đó chưa có trong Apache POI, nhưng API đang dần hình thành.
- Apache POI có một bộ tài liệu và ví dụ phong phú hơn JXL.
Ngoài ra, POI không chỉ chứa API "usermodel" chính mà còn là API dựa trên sự kiện nếu tất cả những gì bạn muốn làm là đọc nội dung bảng tính.
Tóm lại, vì tài liệu tốt hơn, nhiều tính năng hơn, phát triển tích cực và hỗ trợ định dạng Excel 2007+, tôi sử dụng Apache POI.
Thế còn: "API nào có để đọc / ghi bảng tính Microsoft Excel (JXL, Apache POI, v.v.) trong Java? Các kịch bản tốt nhất để sử dụng từng API là gì?"
– Dương Việt Dương 04:34:25 09/12/2014