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:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.ClickDim fileName As Object = "c:\dados\macoratti.doc" Dim [readOnly] As Object = False Dim isVisible As Object = TrueDim 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:
Imports SystemImports System.ComponentModelNamespace WordApplication
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 = False Dim isVisible As Object = TrueDim 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 Word Public 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 ClassEnd Namespace |
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:
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.ClickDim 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 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