Skip to content

Ask YC: Excel Generation (Server Side)?

9 pointserictobia14 comments
On HN

I was curious to know if anyone could recommend a component for server side excel generation (both xls and xlsx) for an ASP.NET application. We cannot install Office on the server. We've been using this component from codeplex...

http://www.codeplex.com/ExcelPackage

...and we haven't been thrilled with it. We're open to a commercial solution - we're just not sure what the best option is.

Thanks in advance for any suggestions.

Comments

I've used 2 methods:

1: SpreadsheetML: You can output XML which is understood by excel, here is an introduction: http://msdn.microsoft.com/en-us/library/bb226687(office.11).aspx

2: Insert values into an existing template.xls which is accessed with sql using an Oledbconnection. The template can have existing charts which will get updated with the new values.

You haven't said what you're trying to put into that Excel spreadsheet. If it's just rows of text, numbers, and formulas, then it's dead simple.

- change your response mime-type to application/excel

- supply a filename ending with .xls

- output comma-separated text.

done.

(it only gets difficult if you need to start embedding charts and specifying fonts)

(it only gets difficult if you need to start embedding charts and specifying fonts)

We do need to do some of this

When I was at Bank of America I worked on an internal Project Management tool that used a ton of Excel spreadsheets. If you can start with some kind of template it becomes dead simple. Excel spreadsheets can be used as datasources without Excel being installed on the server (iirc). Our app just connected to the XLS and dumped the data into the existing columns. If you have charts based on those columns then you're good to go.

Of course if you can't start with a template or need to add columns on the fly...it might be a little more challenging.

We use FlexCel (http://www.tmssoftware.com/site/flexcel.asp) for some very complex .NET excel and PDF generation, and have been very happy with it. Nice clean interfaces and easy to customize.

I know of a lib for Python but it only produces xls.

http://sourceforge.net/projects/pyexcelerator

If you are using ASP.NET why can't you install Office on the server?

The latest (licensed) version of Office we have is 2003. As far as we know using Office 2003 for server side Excel generation is not recommended.

Thanks for the link to the Python framework though.

Its not recommended but it does work! We managed to get MS Office to kick out around 10-15 documents per second on a single IIS server running ASP.net without much optimization. If you wanted to go crazy you could just load-balance the servers and kick out way more docs.

We tried to use a Java lib for Office docs but it was a pain in the neck. We had some very specific requirements for embedding an ActiveX control into a document and the OSS libs just weren't going to cut it. If your volume requirements aren't too high, I would just start with interoping with MS Office.

Yes - COM Automation stuff is generally not recommended for non-interactive usage. Although I think many people do get away with it.

http://en.wikipedia.org/wiki/Office_Open_XML Generating files with this XML format should let you get something into excel. The only others I know of are Java based as I'm fairly anti-ms : http://poi.apache.org/ and http://jexcelapi.sourceforge.net/

XLSX is zipped XMLs, so you might try reverse-engineering. Also consider having a static XLS which imports data from a web-based CSV.

Have you looked at the Apache POI project? Not sure if it can do XLSX yet, though.

I haven't had a look at that...looks promising. Right now I'd be looking for something I can use with C#.

Thanks for the suggestion.

Doesn't CSV work for you? I think Excel even parses formulas in CSVs.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.