Inka

Most reporting components I've been working with (like Crystal Reports bundled with Visual Studio) tend to use data retrieved from a database. Even when they allow to use in-memory objects, this is usually a secondary feature, and you have to use some tricks to use it (e.g., change your object structure so that it becomes more like a database). One consequence is that such components use a flat data source (like a db query), which is then grouped to represent more structured data.

Inka, on the other hand, is completely database-independent. What you print is data from in-memory objects. You are not restricted to a flat data set, your data can be of arbitrary complexity. You are not restricted to a single "Details" section and a hierarchy of groups, you can have arbitrary number of sections, nested or not (hence no need for subreports).

Another feature of Inka is its flexibility. Inka provides many events, both layout-related and data-related, so if your report is too sophisticated to be constructed declaratively, you can use code (meaning regular code, not custom languages or scripts) to generate it.

Inka is extensible: you can add your elements, sections, aggregate functions, and layout rules.

Inka uses XML format for the report source. That means you can edit a report without any IDE, or you can write your own. (Note that this feature is still under development.)

Finally, Inka is being developed using TDD, and is meant to provide testable reports. A big part of the project is dedicated to a testing framework, so you'll be able to test generation of your reports.

You can download Inka at the SourceForge site. Please use their bug tracker and forums for support.

Get Inka at SourceForge.net. Fast, secure and Free Open Source software downloads