Here are difference between Apache POI and JXL library.
First, here are the things where both APIs have the same end functionality:
- Both are free
- Cell styling: alignment, backgrounds (colors and patterns), borders (types and colors), font support (font names, colors, size, bold, italic, strikeout, underline)
- Merged cell regions
- Size of rows and columns
- Data formatting: Numbers and Dates
- Text wrapping within cells
- Freeze Panes
- Header/Footer support
- Read/Write existing and new spreadsheets
- Both attempt to keep existing objects in spreadsheets they read in intact as far as possible.
However, there are many differences:
- Perhaps the most significant difference is that Java JXL does not support the Excel 2007+ ".xlsx" format; it only supports the old BIFF (binary) ".xls" format. Apache POI supports both with a common design.
- Additionally, the Java portion of the JXL API was last updated in 2009 (3 years, 4 months ago as I write this), although it looks like there is a C# API. Apache POI is actively maintained.
- JXL doesn't support Conditional Formatting, Apache POI does, although this is not that significant, because you can conditionally format cells with your own code.
- JXL doesn't support rich text formatting, i.e. different formatting within a text string; Apache POI does support it.
- JXL only supports certain text rotations: horizontal/vertical, +/- 45 degrees, and stacked; Apache POI supports any integer number of degrees plus stacked.
- JXL doesn't support drawing shapes; Apache POI does.
- JXL supports most Page Setup settings such as Landscape/Portrait, Margins, Paper size, and Zoom. Apache POI supports all of that plus Repeating Rows and Columns.
- JXL doesn't support Split Panes; Apache POI does.
- JXL doesn't support Chart creation or manipulation; that support isn't there yet in Apache POI, but an API is slowly starting to form.
- Apache POI has a more extensive set of documentation and examples available than JXL.
Additionally, POI contains not just the main "usermodel" API, but also an event-based API if all you want to do is read the spreadsheet content.
The conclusion is that, Apache POI has got better docs, active development, more features and XLSX support. So, its advisable to use that.