jXLS is a small and easy-to-use Java library for writing Excel files using XLS templates and reading data from Excel into Java objects using XML configuration.


Excel generation is required in many Java applications that have some kind of reporting functionality. The most complete library to manipulate XLS files from Java is Apache POI library. The problems appear when it is required to create a lot of custom and complex Excel reports with rich formatting and enhanced functionality.

In this case you have to write a great bunch of Java code for creating workbook with all required formatting, formulas and other specific settings and correctly export data from a set of Java objects. Such code is hard to debug and the task quite often becomes errorprone and timeconsuming. The other problem is that there are many Excel components for which there is no API provided.

Fortunately POI API allows to read Excel file trying to preserve it as is and then modify it as required. It is obvious it would be much easier to create all correctly formatted report template in some Excel editing tool and specify places where real data should appear.

jXLS is a project that implements this approach and allows creation of extremely complex Excel reports just in several lines of code. All you need is to create XLS template file with all required formatting, formulas, macros etc using specific notation to indicate placement of data and then write a couple lines of code to invoke jXLS engine passing XLS template and the exported data as parameters.

In addition to Excel generation functionality jXLS also contains jxls-reader module which provides a great help if you need to parse Excel files created in a predefined format to pull in the data. jXLS-reader allows you to describe parsing rules in a simple XML and all the other work on reading Excel file and population of your Java objects will be done automatically.

Main Features

  • Using SQL queries directly in XLS templates
  • Simple property access notation
  • Full expression language support
  • Complex object graph export
  • Flexible collection export
  • Flow-Control Tags support
  • Dynamic grouping of data
  • Export of a single collection into multiple worksheets
  • Adjacent tables support!
  • Complex formulas support
  • Charts, Macros and many other Excel features in XLS template
  • Dynamic Outlines
  • Dynamic Columns Hiding
  • Dynamic Cell Style processing through custom Processors
  • JDBC ResultSet export
  • Merged Cells support
  • Multiple bean properties in a single cell
  • Reading XLS files
In your XLS template you can use any Excel features which are preserved by Apache POI when reading and writing XLS files. Particularly it means you can use Charts and Macros in your XLS template and many other features


If you are interested in commercial jXLS support please contact jxls-devel mailing list

A new jXLS Plus product is going to be released soon. Along with new features and better performance it will provide flexible and plugin oriented architecture. Stay tuned!