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 AlvesOlá,
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