In October 2003, Microsoft released Visual Studio Tools for the Office (VSTO). This new group of class libraries brings .NET Framework-based development to Word and Excel 2003 by enabling developers to write managed code in C# or VB .NET that responds to events within the Word and Excel automation models. While not as integrated as Visual Basic for applications (VBA), building on the tradition of Visual VBA and COM-based automation, VSTO)provides developers with significant benefits for building Office solutions, including a familiar coding experience, improved deployment, and improved security.
The Visual Studio 2005 release of VSTO brings significant enhancements to the development of solutions based on Excel and Word 2003. Building on top of VSTO 2003, Visual Studio 2005 Tools for Office will address some of the biggest hurdles facing Office solution developers today, including separation of data and view elements, deployment of Office solution assemblies, server-side and offline scenarios, and seamless integration with the Visual Studio toolset.
One of the primary successes of VSTO 2005 is the separating of “data” from “view” in Office documents in order to simplify the creation of Office-based solutions. Today, Excel spreadsheets and Word documents consist of an amalgamation of either cell values or text (representing the data) and descriptive information about that data, such as the font (representing the view). Because Word and Excel have no built-in concept of programmatic data like Microsoft Access does, developers are limited in their ability to effectively develop solutions around the data stored within the documents.
VSTO 2005 will separate the data from the view in Office documents by enabling data to be embedded as an independent XML data island. This provides a well understood and easily addressable structure that developers can rely on when programming in addition to the benefit of offline support for views of the data. The developer is able to separate presentation (view) and data, and is thus able to update the data directly without concern of writing presentation code. Typed data sets will be used to provide a schema-oriented programming model for interacting with the data island, ensuring IntelliSense support for the managed code being written. Data binding will be used between the data island and the view to keep these two in sync. The developer will also be able to add validation code to the data that is independent from the document view components. Typed DataSets are now exposed as partial classes so you can add validation code very easily and encapsulate it as part of the DataSet itself.
Programming directly to data by way of an XML schema-based model provides improved productivity for developers over previous coding paradigms. Code that works with data does not need to address the Excel and Word object models at all. This simplifies much of the code involved in building Office solutions as well as shields your data code from changes in the document. The resulting code is loosely coupled because it does not rely on hard coded references to specific cells, ranges and tables that can be arbitrarily moved around by end users, rather, your code directly accesses XML data islands.
Working with XML Data Islands enables new server-side opportunities. Most importantly, the data island embedded in the document can be manipulated without starting the individual Office application. This is a major shift from the current model, by which, in order for code to manipulate the contents of the document, Excel or Word must be installed and running. This limitation blocked many solutions from being created such as programmatically creating Office documents from within an ASP.NET application.
The VSTO 2005 runtime will support instantiation on a server without the need to instantiate and run Excel or Word. The data island in a document can then be manipulated from the server-side code as any XML data can. When the user opens the associated Office document the view would be re-synchronized with the data island and the user would be automatically presented with the updated data. In this scenario, Excel and Word are not needed to write to the data on the server, but rather only to view it on the client, limiting potential security holes. This updated model will also provide higher scalability and the ability to perform high performance batch processing of multiple documents (such as T&E documents) containing data islands on the server.
Storing the data in a data island also provides a way to enable rich offline scenarios. When a document is first requested from the server or first opened by the user, the data island will be filled with the most recent data. The data island can then be cached in the document and made available offline. The data could then be manipulated by the user and by code without a live connection. When the user reconnects, the changes to the data could be propagated back to a server data source by code that you provide.
In addition to improving the data programming model, VSTO 2005 introduces enhancements to the way developers programmatically access user interface, elements, such as ranges, lists, and bookmarks. Developers can write code today to manipulate these elements, but they are impacted by the extent to which the Office object models expose events, properties, and methods. For example, the Excel object model provides a WorkSheet_Change event, but does not provide similar events for individual cells or ranges, creating the need for additional code to handle the occurrence of a change to a specific element. VSTO 2005 introduces enhancements to the Excel and Word object models in the area of these user interface elements. Elements, such as cells, ranges, lists, and bookmarks will become first class controls that can be easily accessible in your code. Each control will be uniquely identified and will enable data binding and will provide a more complete event model, making it easier for the developer to manipulate Word and Excel.
VSTO 2005 will also makes it much easier to develop applications with Excel and Word with Visual Studio. With VSTO 2003, developers wrote managed code in Visual Studio .NET then they had to switch to Excel or Word in order to create the user interface. In VSTO 2005, Excel and Word will be hosted directly in the Visual Studio 2005 IDE as designers as live documents. Developers will be able to design Office documents within the Visual Studio environment using the full collection of Windows Forms controls in Excel and Word by simply dragging and dropping managed controls, including third-party controls, from the Toolbox. Just like in other Visual Studio environments, double-clicking on a managed control in Excel or Word will invoke the code view in which customizations can be written inside the auto generated event handler for that control.
Managed control hosting within Word and Excel documents, combined with Excel and Word integration within the Visual Studio IDE, will make Office just another target platform for Visual Studio developers in addition to Windows Forms, ASP .NET, Mobile and Web Services.
What does this mean for InfoPath? Not sure?