

Ask YC: Excel Generation (Server Side)? - erictobia

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...<p>http://www.codeplex.com/ExcelPackage<p>...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.<p>Thanks in advance for any suggestions.
======
PeterHammar
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.

------
jasonkester
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)

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

We do need to do some of this

------
jharrison
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.

------
stsamuel
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.

------
mrtron
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?

~~~
erictobia
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.

~~~
bradgessler
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.

------
keefe
<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/>

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

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

~~~
erictobia
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.

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

