C# -  Criando e visualizando Gráficos no PowerPoint - II
    
    ![]()  | 
    
     No artigo de hoje vou mostrar como podemos criar gráficos básicos usando os recursos da .NET Presentation library e linguagem C#.  | 
    
    			
				![]()  | 
  
Recursos usados:
Usando o projeto criado no Visual Studio 2017 Community
Abra o projeto criado no artigo anterior e inclua um novo botão de comando no formulário :
1 Button - btnGraficoCombinado
Disponha o novo controle no formulário segundo o leiaute da figura abaixo:

Agora vamos ao código usado para implementar o gráfico.
Namespaces usados no formulário :
using System;
using Spire.Presentation;
using System.Drawing;
using Spire.Presentation.Charts;
using System.Data;
using Spire.Presentation.Drawing;
using System.Windows.Forms;
using Microsoft.Office.Core;
Definindo o Código do Formulário
Vamos definir o código no evento Click do novo botão de comando - Gráfico Combinado:
		       private void btnGraficoCombinado_Click(object sender, EventArgs e)
        {
            try
            {
                //Cria um documento PowerPoint
                Presentation presentation = new Presentation();
		                //inclui um gráfico de coluna
                RectangleF rect = new RectangleF(40, 100, 550, 320);
                IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);
		                //define o titulo
                chart.ChartTitle.TextProperties.Text = "Relatório Mensal de Vendas";
                chart.ChartTitle.TextProperties.IsCentered = true;
                chart.ChartTitle.Height = 30;
                chart.HasTitle = true;
		                //cria um objeto datatable com dados
                DataTable dataTable = new DataTable();
                dataTable.Columns.Add(new DataColumn("Mês", Type.GetType("System.String")));
                dataTable.Columns.Add(new DataColumn("Vendas", Type.GetType("System.Int32")));
                dataTable.Columns.Add(new DataColumn("Taxa Crescimento", Type.GetType("System.Decimal")));
                dataTable.Rows.Add("Janeiro", 200, 0.6);
                dataTable.Rows.Add("Fevereiro", 250, 0.8);
                dataTable.Rows.Add("Março", 300, 0.6);
                dataTable.Rows.Add("Abril", 150, 0.2);
                dataTable.Rows.Add("Maio", 200, 0.5);
                dataTable.Rows.Add("Junho", 400, 0.9);
		                //importa os dados do datatabel para o grafico
                for (int c = 0; c < dataTable.Columns.Count; c++)
                {
                    chart.ChartData[0, c].Text = dataTable.Columns[c].Caption;
                }
                for (int r = 0; r < dataTable.Rows.Count; r++)
                {
                    object[] datas = dataTable.Rows[r].ItemArray;
                    for (int c = 0; c < datas.Length; c++)
                    {
                        chart.ChartData[r + 1, c].Value = datas[c];
                    }
                }
		                //define os rótulos das series
                chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
		                //define os rotulos das categorias
                chart.Categories.CategoryLabels = chart.ChartData["A2", "A7"];
		                //atribui dados às series
                chart.Series[0].Values = chart.ChartData["B2", "B7"];
                chart.Series[1].Values = chart.ChartData["C2", "C7"];
		                //altera o tipo tipo de grafico da serie 2 para linha grafico de linha com marcadores
                chart.Series[1].Type = ChartType.LineMarkers;
		                //plota os dados da serie 2 no eixo secundario
                chart.Series[1].UseSecondAxis = true;
		                //define o formato do numero como percentual
                chart.SecondaryValueAxis.NumberFormat = "0%";
		                //oculta as linhas de grade o eixo secundario
                chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None;
		                //define a sobreposição
                chart.OverLap = -50;
		                //define o intervalo da largura
                chart.GapWidth = 200;
		                //salva e exibe o arquivo gerado
                var localArquivo = Path.Combine(@txtLocal.Text, txtNomeGrafico.Text);
                presentation.SaveToFile(localArquivo, FileFormat.Pptx2010);
                if (MessageBox.Show("Grafico :  " + localArquivo + "  Criado em salvo com sucesso. Deseja Visualizar o Arquivo ?", 
"Grafico", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    AbrirArquivo(localArquivo);
                }
             }
            catch (Exception ex)
            {
                MessageBox.Show("Erro : " + ex.Message);
            }
        }        
		 | 
	
Para exibir o gráfico gerado no PowerPoint estamos chamando o método AbrirArquivo() passando o nome do arquivo :
		     private void AbrirArquivo(string localArquivo)
        {
            Microsoft.Office.Interop.PowerPoint.Application pptApp = new Microsoft.Office.Interop.PowerPoint.Application();
            MsoTriState ofalse = MsoTriState.msoFalse;
            MsoTriState otrue = MsoTriState.msoTrue;
            pptApp.Visible = otrue;
            pptApp.Activate();
            Microsoft.Office.Interop.PowerPoint.Presentations ps = pptApp.Presentations;
            Microsoft.Office.Interop.PowerPoint.Presentation p = ps.Open(@localArquivo, ofalse, ofalse, otrue);
            System.Diagnostics.Debug.Print(p.Windows.Count.ToString());
            MessageBox.Show(pptApp.ActiveWindow.Caption);
        }
		 | 
	
Agora vamos executar o projeto e exibir o gráfico gerado como uma combinação de dois gráficos:
		![]()  | 
	
| Gráfico Combinado | 
E assim temos os dois gráficos combinados.
Pegue o projeto completo aqui :  
  
CShp_GraficosPP2.zip
(sem as referências)
E a vida eterna é esta: que te conheçam, a ti só, por único Deus verdadeiro, e a 
Jesus Cristo, a quem enviaste. 
João 
17:3
| 
    
    Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! 
 Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?  | 
  
  Gostou ?  
Compartilhe no Facebook
  
 
Compartilhe no Twitter 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Criando gráficos no VB 2010 Express Edition II - Macoratti.net
VB .NET - Exibindo dados em um Gráfico (revisão) - Macoratti.net