다음을 통해 공유


DotNet: Reporting Options


                 

Introduction

The aim of this article is to give the DotNet developer/architect an idea of which reporting options are likely candidates for their requirement.

Giving an overview of strengths and weaknesses should ease short listing candidates appropriate for further research.

Some of these listed are little known and a developer/architect might not otherwise be aware of them.
                                                                                                                                                            

SAP Crystal Reports

Asp.Net, WPF, Winforms, Silverlight via web page, Server batch 

Download here

Free

This is first on this page because it’s the first reporting tool to look at.  For many .Net developers their default reporting tool of choice. If in doubt then choose Crystal reports.

Crystal allows the creation of a number of report types including banded, graph and sub report.

Especially great for:

Many business requirements. So long as you can define the requirement in advance.

Plusses:

Crystal is a very mature product.  This used to be “in the box” with Visual Basic before .Net was invented and then Visual Studio until recent versions.

Very much a mainstream product - developers have been using Crystal with the Microsoft stack for over 25 years.

If you want a Crystal developer then there are plenty of developers with the experience. 

If you have a problem there are a lot of people available to offer advice.

If you want training then there are plenty of courses.

SAP offer a full server product which can run scheduled jobs but this is of course a product you would pay extra for.  Crystal can work as a com component so it is reasonably easy to roll your own wrapper if you wanted. There are also commercial solutions offered by other suppliers which can handle this.

Downside:

Crystal is not a Microsoft product and far from being the primary product offered by SAP so probably rather low on the priorities for future development.  Seeing as it's already very mature this is not a huge downside.

Not ideal for dynamic reports.  You can do them but it's not fun.

Microsoft Reports

Asp.net, Winforms, SIlverlight via web page, Server batch

Perfectly adequate for regular tabular or chart reporting and therefore a good choice if you expect no complications in reporting.

Despite being called Reporting Services in some documentation you don't need any actual service to be involved and the reports can run on client or server.
You need to convert a server orientated RDL file to a RDLC file to use it on a client.

You used to be able to distribute SSRS but the licensing has changed and you need to use a report viewer and rdlc if you want client based reporting.  SSRS is part of the sql server tool set and the licensing ( now ) doesn't allow you to distribute them freely.

These are not banded reports - you can produce formats which would be very tricky in other technologies.  Of course,  most businesses want tabular reports and hence this is usually academic rather than a unique selling point.

Especially great for.

Dynamic reporting - whilst using the same reporting engine you use for other reports.

Plusses

This is a Microsoft product and you get the same support .net developers are used to.

Since the RDL are xml you can generate them from code for flexible dynamic reporting.

Downsides

This is a relatively new technology and functional but not as feature rich as some alternatives.

MS Access

You can run from Access full or run time and anything you can use com from.

As well as running on a client, you could potentially put access run time on a server and print reports from there.

Access reporting is a really nice tool to work with.  You can write code to do things before or after a section is printed, conditional printing and the formatting features are great.  Little things like lining up columns are easy and you can do layout faster than in other products.

This is a great tool for the developer.

You can build entire systems using Access which will work just fine in small businesses where there is a handful of people in the office.

Access run time is necessary to run access reports on a machine but this is free

A full copy of Access is required to design the reports.

Access is a banded report.

Especially great for

Power user customisable reporting.

Using data from any source you have an odbc driver for.

Small business or ad hoc requirements.
**
Plusses**

Access reporting is a great tool, very easy to use.

So easy that power users can build new reports or modify existing ones with minimal training.

Because Access is an “MS office” product power users are happier working with it than other third party tools.

**
Downsides**

VBA is unfamiliar to some developers who are from a purely C/C# background.

Access gets a bad rap as something “proper developers” would not use and overstated issues from “corrupted” databases.

Requires interop to work with .Net and can therefore be somewhat fragile.  You can of course get round this by going with access runtime.

Transforms - XSLT / XSL

Asp.Net, WPF, Asp.Net, Winforms, Javascript in browser.

XSL allows you to transform xml.  This can be into any tagged format including XMLHTML and XAML.

You can easily write ( or cut and paste off the web ) a transform which will handle any generic piece of xml and turn it into a table or grid. 

Since browser offer xsl you can transform xml from a web service or cookie into HTML in a page on the client.  Any client.

One particularly popular possibility is transforming to Excel.  With xlst you can produce a spreadsheet with formatting, named areas and formulas.

Although XAML implies UI you can transform to XAML controls and print or use them in a XPS or FlowDocument for both viewing and printing. 

Great for

Keeping those users happy who think data isn’t data unless it’s in an Excel file.

Ultimate flexibility in UI.

Plusses
**
**This offers huge flexibility – the usual limitation is the developer’s ingenuity rather than the technology.

A lot of users want formatted excel and if you have to deliver it from a web server this is the technology to use.

Downside

Little known - not very many people have experience using transforms.

Something of an intermediate in that you use it to produce something that can be viewed or printed.

No designer- this is not totally developer friendly.

Jquery

There are numerous Jquery plugins. 

Due to the fast pace of change it’s probably best if the reader researches what is available to them right now.

T4 Template

An unusual option is to generate text using a T4 template.

This has the advantage of being rather familiar if you are an asp.net developer as the templates will look familiar.

It can be any text format file so xml, html, raw xaml are all possible.

http://msdn.microsoft.com/en-us/library/ee844259.aspx

Downside

Obscure – very few people use this approach to generate reports and even though lots of developers are using webforms asp.net or razor with asp.net MVC.

Technically, you could generate any text file and this could be on a server or client.  Realistically this would probably be used to generate html on a client which is a fairly unusual requirement.

Word Mail merge

Word or DotNet via interop.

You can set up a Word document so it merges in data from a specific file and deliver both, providing a process to over write the data file.  Alternatively you can supply the data dynamically to a file and deliver the merged results.

Building Word documents from scratch is possible but rather harder than Excel.  If you need to do say a support ticket in doc or docx format then mail merge is a strong candidate.

Great For

"Reports" where small amounts of data changes – or of course mail merge.

**Plusses
**
SImple - simple is good.

Down Sides

Limited - what most people consider reporting isn’t really practical.

Open Source

There are a number of open source projects.

The problem is that Crystal is free and very good so any marginal advantage you might find in these is rather outweighed by the lack of real support.

Great For

Passing time working out how to get them to do what you want.

Plusses

Ticks the open source box - sorry this is the best I could come up with.
**
Down Sides**

Significant risk the open source project will be abandoned.

Difficult to find a reason to use these when there is a quality commercial product available for free.

ReportingCloud

http://reportingcloud.sourceforge.net/

Good luck working out how this works.

My-FyiReporting

https://github.com/majorsilence/My-FyiReporting

https://groups.google.com/forum/#!forum/myfyireporting

This is far from an exhaustive list.

The elephant in the room is that these are not free.

Telerik Reporting

HTML5, Mobile, Asp.Net, Silverlight, WPF, Winforms, Azure

http://www.telerik.com/products/reporting.aspx

$599 or included in DevCraft $1,499/1,999

Since Telerik controls are very good and offer significant benefit in other areas one of the selling points here is you can buy the reporting as part of a bundle with the controls.

This reduces the effective price but it’s still not zero.

DevExpress Universal Reporting

Winforms, Asp.net, WPF, Silverlight

https://www.devexpress.com/Subscriptions/Reporting/

$1999 +

DevExpress Snap

https://www.devexpress.com/Products/NET/Controls/WinForms/Snap/

Winforms

$899

Windward Autotag

http://windward.net/products/autotag/

Autotag allows you sort of super mail merge facilities for Word and Excel.

Banded Reports

“Banded” reports have horizontal areas ( bands ) which you put content such as fields and labels in.

Usually there are bands for Page header and footer and each row of data.  Adding sort criteria usually lets you choose whether to add a band placed at the start and end of each sort change.