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

  1. <UserControl x:Class=”SilverlightWord.MainPage”
  2.    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
  3.    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
  4.    xmlns:d=”http://schemas.microsoft.com/expression/blend/2008″
  5.    xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006″
  6.    mc:Ignorable=”d”
  7.    d:DesignHeight=”300″ d:DesignWidth=”400″>
  8.     <Grid x:Name=”LayoutRoot” Background=”White”>
  9.         <Button Content=”Abrir Word” Width=”100″ Height=”30″ Click=”Button_Click” />
  10.     </Grid>
  11. </UserControl>

Contiene un botón que abrirá Word e insertará un texto, tan sencillo como

 

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Documents;
  8. using System.Windows.Input;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Animation;
  11. using System.Windows.Shapes;
  12. using System.Windows.Interop;
  13. namespace SilverlightWord
  14. {
  15.     public partial class MainPage : UserControl
  16.     {
  17.         public MainPage()
  18.         {
  19.             InitializeComponent();
  20.         }
  21.         private void Button_Click(object sender, RoutedEventArgs e)
  22.         {
  23.             dynamic word = ComAutomationFactory.CreateObject(“Word.Application”);
  24.             word.Visible = true;
  25.             dynamic doc = word.Documents.Add();
  26.             string insertText = “Aqui introducimos texto a Word desde Silverlight 4!”;
  27.             dynamic range = doc.Range(0, 0);
  28.             range.Text = insertText;
  29.         }
  30.     }
  31. }

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

3 comentarios en “Acceder a Word desde SilverLight”

  1. MMMmmm… no termino de entender este movimiento por parte de Silverlight: Como se va a compatibilizar esto con la multi-plataforma?
    Si se empiezan a meter funcionalidades en SL que sólo funcionan en windows, no pierde parte de su sentido? Podría tener sentido en intranets con entornos totalmente controlados, pero para ello ya tenemos XBAP…

    ¿O igual estoy pasando algo por alto?

    Saludos!

  2. Supongo que sera un movimiento mas en la union de WPF y Silverlight aunque suponga que haya funcionalidades de Silverlight que no funcionen en OSx, aunque en mi modesta opinion es una de las grandes cosas de Silverlight, la multiplataforma.
    Tendremos que ver como evoluciona esta caracteristica

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *