A automatização de processos manuais por sistemas de informação geram grandes quantidades de dados, que são analisados mais facilmente através de gráficos. Um dos grandes poderes do Excel é a facilidade de tratar os dados de forma gráfica. Aqui vou demonstrar uma das formas de utilizar este recurso.
O relatório de saída precisa ser bem organizado, oferecer uma boa visualização e direcionar para as informações mais críticas da análise. Isso nem sempre é simples de obter com as ferramentas de geração de relatórios existentes no mercado, como o Reportviewer, iReport, Crystal Reports, etc. Dou preferência ao Excel pela facilidade de integração e personalização da estrutura desejada da visão final.
Abaixo está um exemplo de relatórios com gráfico que vou criar: (1)

Observação Importante As cores, fontes e imagens não serão alteradas neste exemplo, vou mostrar apenas como inserir os dados para atualizar os gráficos.
(1) Estamos levando em consideração que o gráfico não estará conectado a nenhuma base de dados, pois pode ser enviado por e-mail ou visualizado fora da rede onde foi criado.
Os gráficos estão vinculados aos dados conforme a imagem, e é somente esta planilha que será modificada.

1 – Definir as áreas de atualização da planilha
Para facilitar a atualização dos dados vamos nomear os intervalos que serão utilizados no Excel.
Células D4:E15 nomear como ‘faturamento_clientes‘
Células H3:H4 nomear como ‘nivel_satisfacao‘
Células D19:H30 nomear como ‘tempo_medio_solucao‘
2 – Criar as referências do Visual Studio para usar o Interop
A utilização do Excel no Visual Studio depende de três DLLs: Microsoft.Office.Interop.Excel.dll, OFFICE.DLL e Microsoft.Vbe.Interop.dll.
Para criar as referências acesse o menu ‘Project\Add Reference…’. Na aba ‘COM’ selecione ‘Microsoft Excel 14.0 Object Library’ (neste caso o Excel instalado é da versão 2010 do Microsoft Office).
As três DLLs serão referenciadas automaticamente, mas caso você precise rodar o projeto em um computador que não possua a sua versão do Microsoft Office você deve copiá-las para a pasta de destino do seu projeto.
Com as referências criadas é possível iniciar o procedimento que fará a inclusão dos dados na pasta do Excel.
3 – Criar o procedimento para incluir os dados na planilha
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | public void preencheDadosExcel() { //Objeto do Excel Application xls; //Gerencia a pasta de trabalho criada Workbook wbk; //Controla o intervalo de células Range rng; //Armazena o caminho da planilha com os modelos do gráfico string caminhoPlanilhaPadrao = @"C:\Modelo Relatorio Site.xlsx"; xls = new Application(); //cria uma nova instância do Excel xls.Visible = true;//torna visível o Excel wbk = xls.Workbooks.Add(caminhoPlanilhaPadrao); //associa a variável wbk à pasta de trabalho aberta Name nom; //armazena as informações do intervalo nomeado object[,] dadosIntervalo; //armazena os dados que serão preenchidos no intervalo #region Este procedimento deve ser repetido quantas vezes forem os intervalos a serem preenchidos //Início nom = wbk.Names.Item("faturamento_clientes"); //associa um valor à variável nom dadosIntervalo = new object[12, 2];//associa um valor à variável dadosIntervalo //Esta associação deve ser feita a partir da leitura de um banco de dados, mas a estrutura //final deve ser uma matriz de 12 linhas por 2 colunas //Como exemplo estou associando alguns dados à matriz dadosIntervalo = new object[12, 2] { { 1, 500 }, { 2, 750 }, { 3, 1500 }, { 4, 2100 }, { 5, 2500 }, { 6, 3200 }, { 7, 3500 }, { 8, 4100 }, { 9, 4200 }, { 10, 5500 }, { 11, 5900 }, { 12, 6900 } }; rng = nom.RefersToRange; //associa à range o intervalo nomeado rng.Value2 = dadosIntervalo; //define o valor das células como o conteúdo da matriz //Fim #endregion } |
Neste exemplo os dados foram utilizados para alimentar os gráficos, mas poderiam ser utilizados para criar uma tabela ou outra estrutura que consuma dados no Excel.
Marcus Loyola
Bacharel em Sistemas de Informação
www.mloyola.com.br


Olá Marcus Loyola.
Estou precisando de umas dicas.
Estou com uma aplicação em C#.
Tenho valores em DataGridViews e Arrays Multidimensionais.
A aplicação gera gráficos a partir dos DataGridViews e dos Arrays.
Quero criar um botão que ao ser clicado:
Abra o excel; copia os dados dos DataGridViews e Arrays e gera os gráficos, e fique aberto para o usuário navegar pela planilha.
Abraços,
silvio pontes
Prezado Silvio Pontes,
Um Array bidimensional pode ser inserido diretamente no Excel através de uma simples atribuição de valores, no artigo Relatórios no Excel com C# e Interop a linha 50 demonstra como se faz esta operação.
No caso dos DataGridViews, a maneira mais simples é transformá-lo em array e realizar o procedimento anterior.
Atenciosamente,
Marcus Loyola