Welcome to MSDN Blogs Sign in | Join | Help

Microsoft Excel 2010

The official blog of the Microsoft Excel product team
Excel Services – Key Scenarios

We targeted three scenarios for this initial release of the product (note – “scenario” is development-team speak for “what we expect customers will want to do with a set of features in a product”).

  1. Sharing spreadsheets through the browser
  2. Building business intelligence (BI) dashboards
  3. Reusing the logic encapsulated in Excel spreadsheets in custom applications

Sharing spreadsheets through the browser ...

Let’s take a bit of a more detailed look at each one of those, starting with sharing spreadsheets and related issues around controlling and managing spreadsheets. Today, we see people use a variety of methods to share spreadsheets … email, file shares, Save As Web Page, etc.  For certain classes of spreadsheets – spreadsheets that contain critical business information or logic, calculation-intensive spreadsheets, or spreadsheets that are shared with customers or partners, these methods pose some challenges.  For example, it is easy for different people to change their versions of the spreadsheet, resulting in multiple copies of “the truth”.  As another example, it is very hard for spreadsheet authors to protect parts of their work such as key logic/modeling or data that is considered confidential or proprietary intellectual property while sharing other parts of the spreadsheet, such as the completed analysis they want a client to see.  As a final example, large calculation-intensive spreadsheets are not the type of thing that lend themselves to email – every user that opens it has to wait for the spreadsheet to download and then calculate before they can continue doing their work.

Excel Services gives users a way to deal with these and other challenges related to sharing spreadsheets.  Using Excel 12, a spreadsheet author will be able to save their spreadsheet to a SharePoint document library and give other users browser-based access to the server-calculated version of that spreadsheet.  When a user accesses the spreadsheet, Excel Services will load the spreadsheet, refresh external data if needed, calculate it if necessary, and send the resulting output view back through the browser (DHTML only – no ActiveX, no client install of Excel 12 necessary).  Those users will always be viewing the latest version of the spreadsheet, and they will be able to interact with it in the browser (more on how in a couple of posts.)  Moreover, the spreadsheet author can limit access to specific sheets or ranges in the spreadsheet, enabling the author to hide intellectual property from the folks looking at the results.  In addition, the user accessing the file in the browser only sees cell values and not the underlying formulas.  If multiple users are accessing the same spreadsheet, it will be loaded and calculated only once by the server, saving the network bandwidth and the wait time for long-running calculations.  In addition, spreadsheet access can be logged and audited. Overall, this provides quite a powerful story for sharing spreadsheets (via the browser) in a controlled and secure way.

One thing I will cover further in another post but that I want to briefly touch this post is the fact that Excel Services is built on SharePoint products and technologies.  This means, for example, that when a user saves a spreadsheet to Excel Services, they are really saving it to SharePoint document library, and they get all the benefits of SharePoint document library features.  In addition, there are a whole range of additional features in SharePoint and Excel Services that together provide good tools to help organizations share, manage and control spreadsheets.   These include capabilities like workflow and approval, versioning, auditing, and taking snapshots of spreadsheets at specific points in time.

Building business intelligence dashboards ...

Next, let’s take a look at the second scenario – building BI dashboards.  As you may have already picked up from the BI announcement made a few weeks ago, one of the key focus areas for Excel this release is BI, and that includes both Excel 12 and Excel Services.  The browser-based sharing of spreadsheets I just described is a part of that effort.  In addition we have done a lot of work to make building BI dashboards fast and easy.  In a future post, I will discuss how users will be able to build dashboard and reporting portals quickly and without code using Excel Services and some new features in SharePoint Portal Server.  For now, let me just show you a picture of a browser-based dashboard that can be created using Excel 12, Excel Services, and SharePoint Portal Server without a single line of code.


(Click to enlarge)

Reusing the logic encapsulated in Excel spreadsheets …

Finally, let’s take a look at the third scenario of reusing logic in a spreadsheet.  In addition to a browser-based interface to the server, Excel Services also provides a web-service-based interface.  The same spreadsheet that was published by our spreadsheet author can also be accessed programmatically by any application that can speak web services, and the calling application can change values, calculate the spreadsheet, and retrieve some or all of the entire updated spreadsheet using that interface, subject of course to security permissions.  We think this opens a whole new range of interesting possibilities and solutions.  Today, we often see customers rewriting the logic represented in spreadsheets in code to support running in a server-grade environment.  Excel Services allows the logic to be maintained in the spreadsheet and reused robustly in the context of an application.  A goal of ours has been to give customers the best of both- much easier and more effective modeling in Excel as compared to custom code, but with good application integration, scalability, and manageability.


What Excel Services is not …

When explaining Excel Services to customers, we have found that it is important to explain not only what Excel Services is, but what it is not.  This is a first release for us, and we are very excited about the feature set.  At the same time, we are also aware that when the words “Excel” and “server” are brought together, different people envision many possibilities.  Here are a few areas that Excel Services does NOT cover in this release:

  1. A spreadsheet creation tool – You will not be able to create or edit spreadsheets in a browser – that requires Excel 12.  You will however be able to “interact” with the spreadsheet in the browser in a few specific ways that the author intends– more on that later.
  2. Multi-user spreadsheet authoring – Excel Services does allow many users to open and interact with a spreadsheet at the same time, but they each have their own session.  If they “interact” with the spreadsheet (for example, set a filter on a PivotTable), other users do not see those changes, and their changes are not saved back to the original file.  The server opens the spreadsheet as read-only, and each user has their own session state in the server’s memory.  Note that the workbook is only loaded once in server memory no matter how many users are accessing it, but each user gets a session in memory that maintains the specific interactions (i.e. filters) they’ve performed and how the workbook results should be calculated and returned to that user.  The behaviour is the same when calling through the web services or through the web UI.  So, Excel Services does not attempt to address the scenario of multiple users who want to jointly author a spreadsheet in real time and see each other’s edits.
  3. Breaking apart a single spreadsheet calculation across multiple server boxes – Excel Services does load balance separate spreadsheet calculations across multiple boxes and calculates more than one spreadsheet on a box (each requests runs on a different thread). But it does not break out a single spreadsheet across multiple boxes. The design is optimized for scaling to large numbers of spreadsheets and requests. For example, many users viewing a dashboard with a number of spreadsheets on it, or programmatically running a large parametric sweep on a spreadsheet or group of spreadsheets.

That concludes my two-post introduction to Excel Services.  Over the next few weeks, I will provide an overview of the architecture, explain publishing spreadsheets to the server, discuss browsing and interacting with spreadsheets on the server, and review writing applications using the new Web Services API.  I will also spend some time on building BI dashboards and controlling/securing spreadsheets using the Excel Services and SharePoint.

PS Updated point about multi-user spreadsheet authoring to clarify a few things.

PS2 Updated "Breaking apart a single spreadsheet calculation across multiple server boxes" to make the explanation clearer.

Posted: Wednesday, November 09, 2005 10:10 AM by David Gainer
Filed under:

Comments

Brian Mulder said:

Just reading up on this blog, thanks David for all the info and the nice visuals. Looks like Excel is gonna be great and i can't wait for the beta. What about this scenario, our company (financial services) needs a makeover of our realtime client app(VB) and i'm personally pushing hard for Excel instead of VB.NET as the frontend. It's based on RTD and prototyping is easy but is RTD save for the next years? or will every form of realtime communication move through LCS and do i've to connect the client LCS API to Excel in that case? Any thoughts or a pointers to documents would be very much appreciated.
# November 9, 2005 2:43 PM

Joe Erickson said:

Will Excel Services be based on documented/open API's? Will it be possible to replace the calculation engine on the back end or the editing of workbooks on the front end? Is there any documentation on the subject yet?
# November 9, 2005 3:17 PM

Harlan Grove said:

Your third point for what Excel Services is needs more explanation given your second point for what Excel services is not.

Is: "The same spreadsheet that was published by our spreadsheet author can also be accessed programmatically by any application that can speak web services, and the calling application can change values, calculate the spreadsheet, and retrieve some or all of the entire updated spreadsheet using that interface, subject of course to security permissions."

Is Not: "Multi-user Excel – Lots of users can open and “interact” with a spreadsheet at the same time."

So those calling applications using web services to use Excel spreadsheets stored in SharePoint libraries would need to do so in serial order, one at a time?
# November 9, 2005 7:20 PM

Stephen Bullen said:

I really like the idea of being able to put an Excel workbook on the server and consume it from other applications, but have you joined it up such that it can be consumed by an Excel 12 worksheet?

I'm very interested in speeding up the calc time of long-running financial models. In your MTC/MTR (Multi-Threaded Recalc) post, you mentioned that Excel 12 could be set to use, say, 16 calculation threads and that would be useful if most of the client time is spent submitting the calcs to a server and waiting for a response.

From this post, I understand that I can create a (simple) Excel workbook, upload it to a server (or server farm?) and consume it from a client application using web services.

So what I'd really like to do is to create a workbook that does a simple but lengthy calculation and upload that to a farm of, say, 16 Excel servers (so I have 16 copies of the same workbook running as a server farm). On the client, I'd like to create another workbook that I can set to use 16 threads in MTR mode. The client sends 16 calc requests to the server farm, which uses the 16 boxes to do a single calc each, then returns the results to the client, which has been waiting for them to complete. (Note that I'm *NOT* talking about having a single workbook calced across multiple servers, but of having multiple component workbooks copied to multiple servers and aggregated by a separate workbook on the client).

As the Excel server API is exposed as a web service, I guess I could use VBA to do the connection (called as a UDF from the sheet), but in your MTR post you mentioned that VBA UDFs don't participate in MTR.

So I think I need you to include a built-in worksheet function (not VBA) that I can use to consume Excel server web services directly from the sheet, and that should be able to pass (potentially lots of) parameters to the web service (as a range of name/value pairs?) and retrieve either a single result or an array of results.

That would give me an extremely compelling scenario for upgrading to Excel 12 and using Excel server to slash the calc times of my complex financial models - all out of the box and without writing any code!
# November 10, 2005 3:59 AM

David Gainer said:

Brian, yes, our RTD functionality is fully supported in v12 and will be supported going forward. Here is a link: http://support.microsoft.com/kb/285339/EN-US/

Harlan, I see were I may have been unclear, and I will update the post. Excel Services DOES allow multiple users to interact with the same spreadsheet concurrently but they won’t see each others edits and the edits do not get synced back up to the original document. Each user has their own session state in the server’s memory. The behavior is the same when calling through the web services or through the web UI. Hope that clears it up.

Joe, there will be documented APIs that will let you access and calculate spreadsheets on the server. One of the use cases for the API is writing custom UI on top of a server spreadsheet. More on this with examples in future posts. It isn’t possible to change the calculation engine.

Stephen, the scenario you describe makes perfect sense and is something we have been thinking about. Unfortunately we won’t have an out-of-the-box function this time around. The good news is that you could write this as a custom user defined function using the XLL interface.
# November 10, 2005 1:37 PM

Steve said:

I have a question regarding sharing of sheets, where you state that it's possible for a client to connect and update values. Would the API allow for modification of shared values (where all clients could see that changes), or would the changed values only affect the local connection to the server?
# November 15, 2005 8:37 AM

Innovation Creators said:

I was at Microsoft's office's in Mountain View last Friday; the guest of Don Campbell, Microsoft's Office 2007 Evangelist. I have to say that I was really impressed with what I saw. People are counting Microsoft out, but that's crazy....
# August 1, 2006 7:52 PM

Read/WriteWeb said:

Written by Ebrahim Ezzy and edited by Richard MacManus. Ebrahim runs a search engine called Qube - which is a webified desktop app. Richard's Note: In many ways Ebrahim's conclusions in this article contradict my own views, but I think...
# September 7, 2006 6:44 AM
New Comments to this post are disabled
Page view tracker