Desenvolvimento - Visual Basic .NET

VB.NET - Preenchendo documentos Word com dados de um DataSet

Neste artigo eu vou mostrar como você pode preencher um documento do Word, no caso um contrato, com dados de uma tabela via automação OLE usando o VB.NET.

por José Carlos Macoratti



Neste artigo eu vou mostrar como você pode preencher um documento do Word, no caso um contrato, com dados de uma tabela via automação OLE usando o VB.NET.

Primeiro vamos criar um arquivo no Microsoft Word com o nome de aviso.doc . Abaixo eu estou exibindo o meu arquivo. Você pode criar o seu próprio arquivo com variáveis e texto diferentes.

Neste arquivo .doc eu estou usando palavras precedidas do símbolo @. Ex: @escola , @data ,etc.

Estas palavras são as variáveis que eu vou substituir por dados que estão em um DataSet. Eu vou abrir o datset e segundo um critério , para não ter que emitir todos os avisos de uma vez, vou pegar o dado do dataset e substituir no documento.

Para o exemplo eu criei um banco de dados chamado escola e uma tabela - Alunos - com os dados que eu vou usar para preencher o documento. Abaixo temos a tabela , sua estrutura e seus dados:

Vamos criar o projeto que irá fazer todo este serviço para nós...

Inicie um novo projeto no VS.NET do tipo Windows Application usando a linguagem VB.NET. O nome que eu usei no projeto foi : datasetWord

No formulário padrão insira os componentes: DataGrid , ListBox , 2 Button e 1 Label. Conforme o layout abaixo:

Para este projeto você deve fazer os seguintes imports:

Imports System.Data.oledb
Imports
Microsoft.VisualBasic

Vai precisar também definir as seguinte variáveis:

Dim dsAlunos As New DataSet
Dim
objWord As Object
Dim
i As Integer

Agora no evento Load do formulário temos o código que abre a tabela Alunos e preenche o DataGrid com os dados e o ListBox com os nomes dos alunos.

O código da rotina carregaLista() , que preenche o listbox , é dado a seguir:

Agora o código do botão - Gera Aviso - :

-Neste código estou instanciando um objeto do tipo Microsoft Word,(note que eu não fiz referência a biblioteca nenhuma).

-A seguir percorro a tabela Alunos que preencheu o dataset

-Se o nome que foi selecionado pelo usuário no ListBox é igual a nome da tabela então eu invoco a rotina substituiVariavel passando como parâmetro o nome da variável e o seu valor.

-Note que existem valores que eu obtenho da tabela usando um índice que representa o campo na tabela ; assim :

dsAlunos.Tables(0).Rows(i).Item(1) - representa o segundo campo da tabela Alunos ( o nome). Lembre-se que para o primeiro campo o índice é zero.

A rotina que faz a substituição no documento do Word é a seguinte:

Para encerrar o código da rotina fechaWord e do evento click do botão - Fechar Word sem salvar:

Após rodar o projeto e selecionar o primeiro aluno temos o resultado para o documento:


Pegue o projeto aqui : datasetWord.zip (30 k)

Você pode melhorar o exemplo exibido acima de muitas maneiras.

Vou terminar o artigo com as mesmas palavras do artigo anterior : O resto agora é com você...

José Carlos Macoratti

José Carlos Macoratti