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