 ASP
.NET -  Trabalhando com o Microsoft Word
 ASP
.NET -  Trabalhando com o Microsoft Word 
Este artigo mostra como criar e modificar documentos usando o Microsoft Word em páginas ASP .NET.
Já publiquei diversos artigos sobre esse assunto, confira nos links abaixo:
O termo automação é na verdade um processo que permite que aplicações escritas em VB .NET ou C# possam controlar de forma programática, ou seja : via código, outras aplicações.
A automação para o Microsoft Word permite realizar ações como criar novos documentos, incluir textos em um documento, formatar documentos e efetuar mala direta (mail merge) de documentos com textos.
Usando o Microsoft Word ou outras aplicações do pacote Office praticamente todas as ações que você realiza manualmente nas aplicações através da interface do usuário pode ser também realizada via código usando a automação.
O Microsoft Word, foco deste artigo , expõe a sua funcionalidade através de um modelo de objeto. O modelo de objeto é composto de uma coleção de classes e métodos representando os componentes lógico do Word. Assim temos o objeto Application representando a aplicação Word, o objeto Document representando o documento Word, o objeto Paragraph representando o parágrafo do documento Word e assim por diante, onde cada objeto possui toda a funcionalidade do componente do Word.
|  | Word Object Model Imagem retirada de: http://msdn.microsoft.com/en-us/library/kw65a0we(VS.80).aspx 
 | 
 
| Nota: A versão 3.5 da plataforma .NET , no VS 2008 , temos opções de criar projetos do tipo Office 2007 com diversos templates, inclusive o Word 2007 Document. (Estarei tratando deste assunto em outro artigo.) 
 | 
Para podermos manipular o Microsoft Word em nossas aplicações ASP.NET/VB .NET temos que incluir uma referência COM ao projeto clicando com o botão direito do mouse sobre o nome do projeto e selecionando a opção Add Reference;
Em seguida ativamos a guia COM e selecionamos o Componente COM para o Microsoft Word que vai variar dependendo da versão que você tem instalada.
|  | 
Feito isso já podemos criar uma instância da aplicação Word na aplicação ASP .NET;
Dim wdApp As New Microsoft.Office.Interop.Word.ApplicationNota: Como o modelo de objetos possui uma centena de propriedades e métodos , uma das maneiras mais simples de realizar uma tarefa usando a automação e usar o gravador de Macro da aplicação Office, no caso o Word , efetuar a gravação da macro para uma determinar tarefa. Em seguida espie o código e use-o na sua aplicação ASP .NET
Assim , se desejamos abrir o arquivo macoratti.doc na pasta c:\dados e incluir um texto ao mesmo em uma aplicação ASP .NET usando automação, usamos o gravador de macro para obter o código a seguir:
Abra o Visual Studio 2008 (estou usando a versão trial) e crie um novo projeto Web do tipo ASP .NET web Application com o nome aspNet_Word;
A partir da ToolBox inclua um botão de comando na página Default.aspx e inclua o código abaixo no evento Click do botão:
| ProtectedSub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Dim fileName As Object = "c:\dados\macoratti.doc"Dim [readOnly] As Object = False Dim isVisible As Object = True Dim missing As Object = System.Reflection.Missing.Value Dim oWordApp As New Microsoft.Office.Interop.Word.Application 
     oWordDoc.Activate() oWordApp.Selection.TypeText("www.macoratti.net - teste de inclusÆo de texto...") oWordApp.Selection.TypeParagraph() oWordDoc.Save() oWordApp.Application.Quit(missing, missing, missing) 
     | 
A assinatura do método Open possui 15 argumentos do tipo Object , onde o primeiro argumento é o nome do arquivo.
No site CodeProject , link : http://www.codeproject.com/KB/aspnet/wordapplication.aspx existe um artigo no qual o autor criou uma classe com diversos métodos que realizam as mais diversas tarefas no Word via automação.
O trecho do código da classe convertida para a linguagem VB .NET e feitos algumas alterações segue abaixo:
| ImportsSystem ImportsSystem.ComponentModel NamespaceWordApplication 
     
     Private oWordApplic As Microsoft.Office.Interop.Word.Application 
     Private oDoc As Microsoft.Office.Interop.Word.Document 
     Public Sub New() ' ativa a interface com o objeto COM do Microsoft Word oWordApplic = New Microsoft.Office.Interop.Word.Application 
    End 
    Sub ' Abre o arquivo e ativa-o (ele tem que existir) Public Sub Open(ByVal strFileName As String) 
 Dim fileName As Object = strFileName Dim [readOnly] As Object = FalseDim isVisible As Object = True Dim missing As Object = System.Reflection.Missing.Value oDoc = oWordApplic.Documents.Open(fileName, missing, [readOnly], missing, missing, missing, _ missing, 
    missing, missing, missing, missing, isVisible, missing, missing, missing) oDoc.Activate() End Sub 
 Dim missing As Object = System.Reflection.Missing.Value oDoc = oWordApplic.Documents.Add(missing, missing, missing, missing) oDoc.Activate() 
    End 
    Sub ' encerra o WordPublic Sub Quit() Dim missing As Object = System.Reflection.Missing.Value oWordApplic.Application.Quit(missing, missing, missing) End Sub 
 
    'Salva o documento Word oDoc.Save() End Sub 
 
    'Salvar como Dim missing As Object = System.Reflection.Missing.Value Dim fileName As Object = strFileName 
 oDoc.SaveAs(fileName, missing, missing, missing, missing, missing, _ missing, missing, missing, missing, missing, missing, _ missing, missing, missing, missing) End Sub ...... ......End Sub End Class EndNamespace | 
Com a classe definida no seu projeto basta apenas criar uma instância da mesma e usar o método desejado::
Veja o código abaixo que realiza as seguintes tarefas:
| ProtectedSub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click Dim oWord_AspNet As WordApplication.WordApp 
 oWord_AspNet.Open("c:\dados\macoratti.doc") oWord_AspNet.InsertText(" macoratti.net - quase tudo para vb.net e asp.net") oWord_AspNet.InsertLineBreak() oWord_AspNet.Save() oWord_AspNet.Quit() 
 End Sub | 
Muito mais enxuto , não é mesmo ???
Lembre-se que as páginas ASP .NET residem em um servidor web e o acesso aos adequados devem ser concedidos para que os arquivos possam ser lidos e escritos. (O Word também deve estar instalado no servidor.)
Pegue o projeto completo aqui : aspNet_Word.zip
Eu sei é apenas ASP .NET , mas eu gosto...

| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 | 
             Gostou ?
  Compartilhe no Facebook
 
Compartilhe no Facebook 
  
 Compartilhe no Twitter
  
Compartilhe no Twitter
 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
http://msdn.microsoft.com/pt-br/library/aa701256(en-us,office.11).aspx