.Net based report generation on windows and linux without installed office applications

Jan 28, 2010 at 3:49 PM

Dear  Developers,

I would like to ask for some information you if you know about a program that runs on linux (so can be developped with mono) or is a cross-platform program managing to generate a report of spreadsheets or documents, and if the program can run without having an office installed on the PC?

Thanks, Attila

Jan 28, 2010 at 5:30 PM

Well, a spreadsheet can be viewed as a table. A document is just some text with markup. In the early 90s Tim Berners Lee created a cross-platform markup language. It really took of in 1994 when startup company Netscape launched a visual viewer (Netscape Communicator) for this remarkable markup language. Documents written in this markup language are known to be viewable in MS Dos 6, Windows 3.x and higher, Linux 1.x and higher, Mac OS, OSX, IBM OS/2, etc, etc. That language is called HTML.

HTML also has support for table and scripting making it possible to generate spreadsheet layouts.


Real spreadsheets are very hard, because there is no universal spreadsheet markup language. The second best thing is generating PDF documents. with libraries like iTextSharp and PDFSharp you can generate PDF files. With fonet (a codeplex project) you can create a intermediate XSL:FO (Formatted Objects) XML document and pass it to fonet which creates a PDF document. If you have access to SQLServer 2005 (not express) or higher than you might consider using Reporting Services.








Jan 28, 2010 at 7:01 PM

Thanks for you answer, Swordfish!

I know that in HTML and in XML we can create spreadsheets and documents, and with xsd schema declaration we can check whether the xml file is valid or not. And I also know the we can write comment in XML but if we would like to process it with a program which is prepared for spreadsheets and documents how can we solve that conflict?

And I also think that if somebody wants to create a real spreadsheet viewer which is cross-platform it takes a lot of months. With PDF documents I agree that it is readable for us, but as I mentioned I would like that the output can be used for an other program.

And for your last idea, which is Reporting Services can I ask you if you had heard about cross-platform or linux managed Reporting Systems?

Bests regards! Attila


Jan 28, 2010 at 11:09 PM

Microsoft SqlServer Reporting Services only runs on Windows (Microsoft products genarally don't work that good under linux).

But there are hunderds of tools that allow you to DOWNLOAD the report and view it. Did you know that Konqueror can display HTML pages created by ASP.NET and hosted on IIS?! I know it's weird but it true.. You can write a simple 'host' application around the Gecko or Webkit browser engines to make a kiosk like application.

Writing cross-platform applications is so 2009. Today we use the internet. Why would you limit to word processing and spreadsheets? What about presentations? Have you ever looked at Google Docs?

Don't want to write an ajax enabled website? That's fine. You can also resort to Silverlight 2 (or moonlight) as it's called under Linux.
It's supports a subset of WPF. Silverlight/Moonlight can display FlowDocuments and FixedDocuments.

But seriously, writing a spreadsheet that works cross-platform takes a few years (you might want to check SVN commit log at openoffice.org that get some timeline it you have hunders developers at your disposal).
It took Microsoft more than a year to Microsoft Office 2007 to OSX (Office 2008).

With big players on the market like Microsoft, OpenOffice (now part of Oracle), Google Docs and KOffice I serious doubt it if you can gather enough developers to writing another office like application. Most projects read end-of-life within a few months.
Be sensable a start using a webbrowser to display your product. Ajax, Silverlight and even Flash are strong recommedations. The last two have also offlien capabilities (Silverlight offline, Adobe Air). I believe Google has a toolkit for writing a offline web application.