A client asked us to produce Excel reports in ASP.NET application. They've given an Excel templates, and also defined what they want to show.
What are our options?
For us, biased to xslt, it's hard to make a fair choice. To judge, we've tried formalize client's request and to look into future support.
So, we have defined sql stored procedures to provide the data. This way data can be represented either as ADO.NET DataSet, a set of classes, as xml, or in other reasonable format. We do not predict any considerable problem with data representation if client will decide to modify reports in future.
It's not so easy when we think about Excel generation.
Due to ignorance we've thought that Excel is much like xslt in some regard, and that it's possible to provide a tabular data in some form and create Excel template, which will consume the data to form a final output. To some extent it's possible, indeed, but you should start creating macro or vb scripts to achieve acceptable results.
When we've mentioned macroses to the client, they immediately stated that such a solution won't work due to security reasons.
Comparing COM API and Open XML SDK we can see that both provide almost the same level of service for us, except that the later is much more lighter and supports only Open XML format, and the earlier is a heavy API exposing MS Office and supports earlier versions also.
Both solutions have a considerable drawback: it's not easy to create Excel report in C#, and it will be a pain to support such solution if client will ask, say in half a year, to modify something in Excel template or to create one more report.
Thus we've approached to xslt. There we've found two more directions:
It's turned out that it's rather untrivial task to generate data for Open XML, and it's not due to the format, which is not xml at all but a zipped folder containing xmls. The problem is in the complex schemas and in many complex relations between files constituting Open XML document. In contrast, MS Office 2003 format allows us to create a single xml file for the spreadsheet.
Selecting between standard and up to date format, and older proprietary one, the later looks more attractive for the development and support.
At present we're at position to use xslt and to generate files in MS Office 2003 format. Are there better options?
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, super, u