Open Source Reports in C#

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:

Business graphics

  • Column (plain, stacked, percent stacked),
  • Bar (plain, stacked, percent stacked)
  • Line (plain, smooth)
  • Pie (plain, exploded)
  • Area (plain, stacked)
  • Doughnut
  • Scatter
  • Bubble
  • 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

Output rendering

  • HTML
  • PDF
  • XML
  • Web Archive
  • .Net control
  • printer
  • Excel
  • TIFF
  • RTF
  • CSV
  • Silverlight

Databases, files, web,…

  • Microsoft SQL Server
  • Microsoft OLE DB Provider
  • ODBC – tested with MySQL
  • XML
  • Web Services
  • CSV files
  • Web Logs
  • Directories
  • iTunes XML files
  • Configurable to any .Net data provider including Oracle, SQLite, MySql, Firebird, Sybase
    iAnyWhere, PostgresSQL, …

Programmatic Data

  • Any IEnumerable collection of objects with property names matching the DataSet
  • IDataReader
  • DataTable
  • 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


  • iif, choose, switch


  • Math (Abs, Cos, Sin, Log, …)
  • String (Concat, Format, IndexOf, Substring, …)
  • Convert (ToDateTime, ToDouble, ToDecimal, …)


  • +,-,/,*,^,%
  • decimal and floating point arithmetic


  • and, or, not

User written functions:

  • VB functions defined within the report
  • Static and instance based methods in your DLLs

Reports may be included in other reports.
Bar codes
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.

2 thoughts on “Open Source Reports in C#

    • I am not sure what you really mean by “can’t make a report component class of Fyi to my C# Project”. To use the Fyi reporting component, you will need to add the reference to the DLLs, and if you are using visual studio for your project, after adding the reference, you can right click on the tools panel in visual studio and choose to add items and select the Fyi reporting DLLs, the components will be showing in the tools panel and you can use them the same way as other components in the tools panel.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s