I am trying to design a solution for accessing data in Excel 2010 (and previous versions). Some high level requirements/constraints are below:
- The data is stored in a database.
- Users should not be able to connect to the database directly.
- The types of data access they are likely to want will be consumed by other applications.
- The users will want to work with the data by directly importing into worksheets and also through VBA.
From my knowledge I thought of the following
- WCF Service
- Can be consumed by other applications
- Will introduce latency (if that is an issue)
- Cannot be consumed directly in worksheet without VBA?
- WCF Data Services
- Can be consumed by other applications
- Nicer model to expose (via EF) and work with (RESTful, OData)
- Will introduce latency (if that is an issue)
- Can be consumed by PowerPivot directly
- Cannot be consumed directly in worksheet without VBA?
- Only compatible with 2010 without VBA
- Web Query
- Requires more effort to build (will need to put together ASP.NET façade in front of database)
- Can be consumed directly in worksheet without VBA
- Compatible with all required versions of Excel
- Poor mechanism for exposing data for other applications (non-Excel)
I am beginning to think there isn't a one size fits all solution does not exist and will have to create an interface for direct worksheet access and another interface for everything else, be it SOAP or REST type data service.
Does anyone have any suggestions/experience?
Thanks