Acceder a Word desde SilverLight - Blog de Oskar Alvarez

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

Published 2/12/2009 16:11 por Oskar Alvarez
Archivado en:
Comparte este post:
http://geeks.ms/blogs/oalvarez/archive/2009/12/02/acceder-a-word-desde-silverlight.aspx

Comentarios

# Acceder a Word desde SilverLight

Con Silverlight 4 dentro de sus nuevas funcionalidades tenemos el acceso a objetos COM, aunque hay que

Wednesday, December 02, 2009 4:53 PM por .NET con oskar

# re: Acceder a Word desde SilverLight

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!

Wednesday, December 02, 2009 5:01 PM por Eduard Tomàs i Avellana

# re: Acceder a Word desde SilverLight

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

Wednesday, December 02, 2009 10:56 PM por Oskar Alvarez