AXIS connects to Office 2007 Excel Services

Office 2007 introduces all sorts of new cool things. One of the things that has me most jazzed is the Excel services, which is part of the Microsoft Office Sharepoint Server 2007 (aka MOSS 2007). What Excel Services gives you - you can now use server resources to run spreadsheet computations. Previous to the release of Excel Services, spreadsheets would have to run on the desktop. They were a "client" resource.

For a long time though, running spreadsheets on the server has been done in financial services companies. These companies design and build complex, long-running computational models in an Excel spreadsheet, and they love the power Excel brings in that area. But then running the sheet - oh, a big one can take hours on a fast workstation. These companies often want to share the access to the computation model, without actually requiring every user to install MS Excel, load the particular XLS, and run the calculation on the local machine. So they'd like to share out that spreadsheet, as a service.

How is this possible? Before MOSS 2007, there were a couple approaches. One is the do-it-yourself, rubber-bands and duct-tape approach. For example, you could build an ASP.NET web page or web service, and from within the program logic, use COM interop to instantiate Excel on the server, and run the spreadsheet that way. But this was never supported by Microsoft and Microsoft issued a KB article discouraging the practice of running Office applications from server-side artifacts like ASP.NET or ASP. There are just too many pitfalls. There are third parties [ link, link, link ] that have come up with engines that essentially take an .xls and then convert it to some server-side executable artifact. But there are challenges with this approach as well. Some people did not like the third-party tools. Some people wanted a cleaner solution.

Now with Office 2007, this is possible within Office itself. You can either display a server-side spreadsheet in a browser, even better, MOSS 2007 exposes this capability via webservices, so you can open a workbook, and run a calculation, from any web services client.

Any client? I haven't tested them all, so I don't know for sure, but it seems so. I just tried this with a Java client using AXIS 1.4, and it worked the first time. Source code is attached here.

The only trick for AXIS was, I had to use the Commons HTTP client - this is the piece of the jakarta framework that supports NTLM authentication. Look here for info on how to set that up.

Check the webcast on using Excel Services

ExcelServicesClient.java