Acceder a Word desde SilverLight
Con Silverlight 4 dentro de sus nuevas funcionalidades tenemos el acceso a objetos COM, aunque hay que indicar que solo podemos acceder con elevación de permisos. Esta nueva funcionalidad nos abre un nuevo camino de posibilidades, como por ejemplo interactuar con Word o Excel, y vamos a ver un ejmplo.
Añadimos la referencia al asembly Microsoft.CSharp.dll que se encuentra en Program Files/Microsoft SDKs/Silverlight/V4.0/Libraries/Client/ , creamos nuestro control
- <UserControl x:Class="SilverlightWord.MainPage"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d"
- d:DesignHeight="300" d:DesignWidth="400">
-
-
- <Grid x:Name="LayoutRoot" Background="White">
- <Button Content="Abrir Word" Width="100" Height="30" Click="Button_Click" />
- </Grid>
- </UserControl>
Contiene un botón que abrirá Word e insertará un texto, tan sencillo como
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Shapes;
- using System.Windows.Interop;
- namespace SilverlightWord
- {
- public partial class MainPage : UserControl
- {
- public MainPage()
- {
- InitializeComponent();
- }
-
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- dynamic word = ComAutomationFactory.CreateObject("Word.Application");
- word.Visible = true;
- dynamic doc = word.Documents.Add();
- string insertText = "Aqui introducimos texto a Word desde Silverlight 4!";
- dynamic range = doc.Range(0, 0);
- range.Text = insertText;
- }
- }
- }
-
Si os fijáis estamos utilizando una nueva funcionalidad de C#4 que es dynamic que nos permite instanciar el objeto COM
Impresionante el camino que esta tomando Silverlight