Desenvolvimento - C#

Funcionalidades do Office usando Visual Studio for Office – Parte 3

Nesse terceiro post da série vamos trabalhar com um ActionsPane agora consultando um DataGridView e ao clicar da linha, insere um texto no corpo do documento.

por Ediberto Alves



Olá,

No meus dois posts anteriores falei sobre as funcionalidades do VSTO; o primeiro, mostrando um “Olá Mundo”; e o segundo, inserindo um texto ao clicar no botão de um ActionsPane. Agora nesse terceiro post da série vamos trabalhar com um ActionsPane agora consultando um DataGridView e ao clicar da linha, insere um texto no corpo do documento.

Criando o projeto:

Abra o Visual Studio 2008 SP1, vá em File > New Project... e selecione WordDocument 2007, e logo abaixo dê um nome ao projeto:

Na tela a seguir, poderá selecionar qual documento deseja anexar ao projeto, se é um novo documento ou macro, há também de associar um documento que já existe:

Dentro do Visual Studio, uma tela Word é carregada, juntamente a namespace ThisDocument é associada ao Word:

Adicionando ActionsPane ao projeto:

No Solution Explorer, clique com o botão direito do mouse e a seguir Add > New Item… e vamos adicionar o ActionsPane, como a figura a seguir; coloque um nome e seguida OK:

Ao final, o ActionsPane será adicionado ao Solution Explorer:

 

Adicionando um DataGridView ao ActionsPane:

Voltando  ao modo design, na Toolbox, vamos inserir um DataGridView, como a figura abaixo:

Importante: A base de dados que vamos usar vai ser o Northwind 2007, pode baixar gratuitamente no site oficial do Microsoft Office no link abaixo:

<a href="http://office.microsoft.com/pt-br/templates/TC012289971046.aspx?pid=CT101428651046"> Northwind 2007</a>

Inserindo o código:

No modo design do documento, adicione um Label no documento, e altere-o suas propriedades BackColor e Font:

Voltando ao código do ActionsPane, insira o namespace System.Data e System.Data.OleDb na seção de using, crie um DataTable que vai receber os dados populados vindos da tabela de clientes da base Northwind:

        private void apcDados_Load(object sender, EventArgs e)

        {

            dataGridView1.DataSource = recuperaTabelaClientes();

        }

Vamos criar um método recuperaTabelaClientes(), que será responsável por retornar um DataTable com os dados:

Importante: Memorize o caminho do base Northwind, pois pode gerar uma exceção ao compilar o projeto:

        private DataTable recuperaTabelaClientes()

        {

           

            string Conexao = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Northwind 2007.accdb;Persist Security Info=False;";

            string vSQL = "select nome, sobrenome from Clientes";

           

            OleDbConnection vConn = new OleDbConnection(Conexao);

            OleDbDataAdapter vDataAdapter = new OleDbDataAdapter(vSQL, vConn);

            DataTable vTable = new DataTable();

            vDataAdapter.Fill(vTable);

            return vTable;

        }

E clique evento CellClick da DataGridView:

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

        {

            Globals.ThisDocument.label1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() + " " +

                dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();

        }

Voltando ao namespace ThisDocument.cs, crie e instancie um objeto que instancie o ActionsPane; e no evento Startup adicione o código que vai exibir o ActionsPane ao documento:

        private apcDados vAPDados = new apcDados();

        private void ThisDocument_Startup(object sender, System.EventArgs e)

        {

            // adiciona o actionspane no word

            this.ActionsPane.Controls.Add(vAPDados);

        }

Executando o projeto:

Compile o projeto (F5) e observe a ActionsPane no Word e ao clicar em cada célula do DataGridView, o label receberá o nome do cliente:

Bom pessoal, este foi mais um exemplo usando Visual Studio for Office, imagine a situação do dia-a-dia, onde usuários precisam gerar relatórios, memorandos, tabelas de informações usando bancos de dados, o VSTO facilita muito na integração, fiquem a vontade para fazer o que quiserem com essa tecnologia. XD

Abraços

Ediberto Alves

Ediberto Alves - Desenvolvedor, graduado em Tecnologia em Informática em atuação na área de desenvolvimento de soluções nas plataformas Win32 e Web, usando tecnologias .NET, Delphi e banco de dados Oracle, Firebird, SQL Server há mais de 7 anos. Publica artigos sobre desenvolvimento, tecnologia e outros assuntos no blog: http://edibertoalves.com.br/blog e também, presente nos fóruns da comunidade .NET.