When thinking reports most commonly we will think of Crystal Reports, which is popular and widely used in the business world. Microsoft Visual Studio has build in support for developing Crystal Reports.
But while Crystal Reports is great and there are a lot of resources out there, there are some disadvantages come with it, from development point of view. Here are few:
- You need to buy Crystal Report license for each pc you
are used to design the crystal report.
- Deployment issue, need to install runtime components. In our company since we have reports developed both in VB6 and .NET, we have to install two sets of deployment packages: one for COM and one for .NET.
- Crystal Reports is not really fast, especially with large data with grouping or drill-down reports
- Grouping and Sub-Reports are over complicated and difficult to maintain
Several years I came across an excellent open source reporting tools written in C#: FyiReporting, it has most features we needed for reporting:
- Column (plain, stacked, percent stacked),
- Bar (plain, stacked, percent stacked)
- Line (plain, smooth)
- Pie (plain, exploded)
- Area (plain, stacked)
- Map (usa_map, world_map, user configurable)
||Presents report items in a tabular format
- Table groups
- Multiple header, footer, detail rows
||Allows absolute positioning of report items
||Also know as cross tabulation.
- Multi-level grouping of rows and columns
- Web Archive
- .Net control
||Databases, files, web,…
- Microsoft SQL Server
- Microsoft OLE DB Provider
- ODBC – tested with MySQL
- Web Services
- CSV files
- Web Logs
- iTunes XML files
- Configurable to any .Net data provider including Oracle, SQLite, MySql, Firebird, Sybase
iAnyWhere, PostgresSQL, …
- Any IEnumerable collection of objects with property names matching the DataSet
- XML Documents
XML Data may be embedded in report or an external file
||Expression language based on VB .Net functions and expressions. Including the following:
- DDB, FV, IPmt, NPer, Pmt, PV, Rate, SLN, SYD
- sum, avg, count, max, min, stdev, stdevp, var, varp, running value of all aggregate functions
- Math (Abs, Cos, Sin, Log, …)
- String (Concat, Format, IndexOf, Substring, …)
- Convert (ToDateTime, ToDouble, ToDecimal, …)
- decimal and floating point arithmetic
User written functions:
- VB functions defined within the report
- Static and instance based methods in your DLLs
||Reports may be included in other reports.
||EAN-13 and Bookland are provided. Public interfaces allow you to create your own custom report
What I liked is that it is simple to deploy, just several DLLs, it has a designer as well, and most importantly, it is open source and can be tailored for our needs. For example, I have modified the FyiReporting to raise an event when double clicking the data on the report, with this I can provide drill down reports based on what has been clicked, which is much simpler and faster than Crystal Reports which pre-load all data for the dill down reports.