• C# 在PPT幻灯片中创建图表


    图表能够很直观的表现数据在某个时间段的变化趋势,或者呈现数据的整体和局部之间的相互关系,相较于大篇幅的文本数据,图表更增加了我们分析数据时选择的多样性,是我们挖掘数据背后潜在价值的一种更为有效地方式。在做数据汇报时,常用到PPT幻灯片来辅助工作,下面的示例中将演示如何通过C#编程在PPT幻灯片中创建图表。示例中主要介绍了三种图表的创建方法,如下:

    1. 创建柱形图表

    2. 创建饼状图表

    3. 创建混合型图表(柱形图、折线图)

    使用工具Spire.Presentation for .NET

    PS:下载安装后,注意添加引用Spire.Presentation.dll到程序,dll文件可在安装路径下的Bin文件夹中获取。

    【示例 1 】创建柱形图表

    步骤 1 :添加using指令

    using Spire.Presentation;
    using Spire.Presentation.Charts;
    using System;
    using System.Drawing;

    步骤 2 :创建一个PowerPoint文档

    Presentation presentation = new Presentation();

    步骤 3 :在幻灯片指定位置绘入指定大小和类型的图表

    RectangleF rect = new RectangleF(40, 50, 680, 500);
    IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.Column3DClustered, rect);

    步骤 4 :添加图表数据

    //添加图表名
    chart.ChartTitle.TextProperties.Text = "2018年上半年销量";
    chart.ChartTitle.TextProperties.IsCentered = true;
    chart.ChartTitle.Height = 30;
    chart.HasTitle = true;
    
    //定义一个sting[,]数组
    string[,] data = new string[,]
     {
      {"产品大类","1月","2月","3月","4月","5月","6月" },
      {"DW10","1542","1057","1223","1302","1145","1336"},
      {"ZQ13","4587","3658","2515","3154","2984","3890" },
      {"YI73","558","458","369","576","334","482" },
      {"TR11","2011","2485" ,"3010" ,"2785" ,"2225" ,"2476" }
     };
    
    //将数据写入图表后台数据表
    for (int i = 0; i < data.GetLength(0); i++)
    {
        for (int j = 0; j < data.GetLength(1); j++)
        {
            //将数字类型的字符串转换为整数
            int number;
            bool result = Int32.TryParse(data[i, j], out number);
            if (result)
            {
                chart.ChartData[i, j].Value = number;
            }
            else
            {
                chart.ChartData[i, j].Value = data[i, j];
            }
        }
    }
    
    //设置系列标签
    chart.Series.SeriesLabel = chart.ChartData["B1", "G1"];
    
    //设置类别标签
    chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
    
    //为各个系列赋值
    chart.Series[0].Values = chart.ChartData["B2", "B5"];
    chart.Series[1].Values = chart.ChartData["C2", "C5"];
    chart.Series[2].Values = chart.ChartData["D2", "D5"];
    chart.Series[3].Values = chart.ChartData["E2", "E5"];
    chart.Series[4].Values = chart.ChartData["F2", "F5"];
    chart.Series[5].Values = chart.ChartData["G2", "G5"];

    步骤 5 :应用图表样式

    //应用内置图标样式
    chart.ChartStyle = ChartStyle.Style12;
    //设置系列重叠
    chart.OverLap = -50;
    //设置类别间距
    chart.GapWidth = 200;

    步骤 6 :保存文档

    presentation.SaveToFile("柱形图.pptx", FileFormat.Pptx2010);
    System.Diagnostics.Process.Start("柱形图.pptx");

    调试运行程序后,生成图表,如下图:

    全部代码:

    using Spire.Presentation;
    using Spire.Presentation.Charts;
    using System;
    using System.Drawing;
    
    namespace ColumnChart
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建一个PowerPoint文档
                Presentation presentation = new Presentation();
    
                //插入柱形图
                RectangleF rect = new RectangleF(40, 50, 680, 500);
                IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.Column3DClustered, rect);
    
                //添加图表名
                chart.ChartTitle.TextProperties.Text = "2018年上半年销量";
                chart.ChartTitle.TextProperties.IsCentered = true;
                chart.ChartTitle.Height = 30;
                chart.HasTitle = true;
    
                //定义一个sting[,]数组
                string[,] data = new string[,]
                 {
                  {"产品大类","1月","2月","3月","4月","5月","6月" },
                  {"DW10","1542","1057","1223","1302","1145","1336"},
                  {"ZQ13","4587","3658","2515","3154","2984","3890" },
                  {"YI73","558","458","369","576","334","482" },
                  {"TR11","2011","2485" ,"3010" ,"2785" ,"2225" ,"2476" }
                 };
    
                //将数据写入图表后台数据表
                for (int i = 0; i < data.GetLength(0); i++)
                {
                    for (int j = 0; j < data.GetLength(1); j++)
                    {
                        //将数字类型的字符串转换为整数
                        int number;
                        bool result = Int32.TryParse(data[i, j], out number);
                        if (result)
                        {
                            chart.ChartData[i, j].Value = number;
                        }
                        else
                        {
                            chart.ChartData[i, j].Value = data[i, j];
                        }
                    }
                }
    
                //设置系列标签
                chart.Series.SeriesLabel = chart.ChartData["B1", "G1"];
    
                //设置类别标签
                chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
    
                //为各个系列赋值
                chart.Series[0].Values = chart.ChartData["B2", "B5"];
                chart.Series[1].Values = chart.ChartData["C2", "C5"];
                chart.Series[2].Values = chart.ChartData["D2", "D5"];
                chart.Series[3].Values = chart.ChartData["E2", "E5"];
                chart.Series[4].Values = chart.ChartData["F2", "F5"];
                chart.Series[5].Values = chart.ChartData["G2", "G5"];
    
                //应用内置图标样式
                chart.ChartStyle = ChartStyle.Style12;
    
                //设置系列重叠
                chart.OverLap = -50;
    
                //设置类别间距
                chart.GapWidth = 200;
    
                //保存并打开文档
                presentation.SaveToFile("柱形图.pptx", FileFormat.Pptx2010);
                System.Diagnostics.Process.Start("柱形图.pptx");
            }
        }
    }
    View Code

     

    【示例 2 】创建环形图表

    步骤 1 :添加using指令

    using Spire.Presentation;
    using Spire.Presentation.Charts;
    using Spire.Presentation.Drawing;
    using System.Drawing;

    步骤 2 :新建一个PPT文件

    Presentation presentation = new Presentation();

    步骤 3 :插入圆环形图表

    RectangleF rect = new RectangleF(40, 100, 550, 320);
    IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.Doughnut, rect, false);

    步骤 4 :添加图表数据内容

    //设置图表名
    chart.ChartTitle.TextProperties.Text = "市场份额";
    chart.ChartTitle.TextProperties.IsCentered = true;
    chart.ChartTitle.Height = 30;
    chart.HasTitle = true;
    
    //定义数据
    string[] countries = new string[] { "古巴", "墨西哥", "法国", "德国" };
    int[] sales = new int[] { 1800, 3000, 5100, 6200 };
    
    //将数据写入图表后台数据表
    chart.ChartData[0, 0].Text = "国家";
    chart.ChartData[0, 1].Text = "销售额";
    for (int i = 0; i < countries.Length; ++i)
    {
        chart.ChartData[i + 1, 0].Value = countries[i];
        chart.ChartData[i + 1, 1].Value = sales[i];
    }

    步骤 5 :应用图表标签

    //设置系列标签
    chart.Series.SeriesLabel = chart.ChartData["B1", "B1"];
    
    //设置分类标签
    chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
    
    //为系列赋值
    chart.Series[0].Values = chart.ChartData["B2", "B5"];
    
    //添加点到系列
    for (int i = 0; i < chart.Series[0].Values.Count; i++)
    {
        ChartDataPoint cdp = new ChartDataPoint(chart.Series[0]);
        cdp.Index = i;
        chart.Series[0].DataPoints.Add(cdp);
    }
    
    //为系列里的个点添加背景颜色
    chart.Series[0].DataPoints[0].Fill.FillType = FillFormatType.Solid;
    chart.Series[0].DataPoints[0].Fill.SolidColor.Color = Color.LightBlue;
    chart.Series[0].DataPoints[1].Fill.FillType = FillFormatType.Solid;
    chart.Series[0].DataPoints[1].Fill.SolidColor.Color = Color.MediumPurple;
    chart.Series[0].DataPoints[2].Fill.FillType = FillFormatType.Solid;
    chart.Series[0].DataPoints[2].Fill.SolidColor.Color = Color.DarkGray;
    chart.Series[0].DataPoints[3].Fill.FillType = FillFormatType.Solid;
    chart.Series[0].DataPoints[3].Fill.SolidColor.Color = Color.DarkOrange;
    
    //设置标签显示数值
    chart.Series[0].DataLabels.LabelValueVisible = true;
    
    //设置标签显示百分比
    chart.Series[0].DataLabels.PercentValueVisible = true;
    
    //设置圆环内径大小
    chart.Series[0].DoughnutHoleSize = 60;

    步骤 6 :保存文档

    presentation.SaveToFile("环形图.pptx", FileFormat.Pptx2013);
    System.Diagnostics.Process.Start("环形图.pptx");

    圆环图表创建效果:

    全部代码:

    using Spire.Presentation;
    using Spire.Presentation.Charts;
    using Spire.Presentation.Drawing;
    using System.Drawing;
    
    namespace DoughnutChart
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建一个PowerPoint文件
                Presentation presentation = new Presentation();
    
                //插入圆环图
                RectangleF rect = new RectangleF(40, 100, 550, 320);
                IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.Doughnut, rect, false);
    
                //设置图表名
                chart.ChartTitle.TextProperties.Text = "市场份额";
                chart.ChartTitle.TextProperties.IsCentered = true;
                chart.ChartTitle.Height = 30;
                chart.HasTitle = true;
    
                //定义数据
                string[] countries = new string[] { "古巴", "墨西哥", "法国", "德国" };
                int[] sales = new int[] { 1800, 3000, 5100, 6200 };
    
                //将数据写入图表后台数据表
                chart.ChartData[0, 0].Text = "国家";
                chart.ChartData[0, 1].Text = "销售额";
                for (int i = 0; i < countries.Length; ++i)
                {
                    chart.ChartData[i + 1, 0].Value = countries[i];
                    chart.ChartData[i + 1, 1].Value = sales[i];
                }
    
                //设置系列标签
                chart.Series.SeriesLabel = chart.ChartData["B1", "B1"];
    
                //设置分类标签
                chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
    
                //为系列赋值
                chart.Series[0].Values = chart.ChartData["B2", "B5"];
    
                //添加点到系列
                for (int i = 0; i < chart.Series[0].Values.Count; i++)
                {
                    ChartDataPoint cdp = new ChartDataPoint(chart.Series[0]);
                    cdp.Index = i;
                    chart.Series[0].DataPoints.Add(cdp);
                }
    
                //为系列里的个点添加背景颜色
                chart.Series[0].DataPoints[0].Fill.FillType = FillFormatType.Solid;
                chart.Series[0].DataPoints[0].Fill.SolidColor.Color = Color.LightBlue;
                chart.Series[0].DataPoints[1].Fill.FillType = FillFormatType.Solid;
                chart.Series[0].DataPoints[1].Fill.SolidColor.Color = Color.MediumPurple;
                chart.Series[0].DataPoints[2].Fill.FillType = FillFormatType.Solid;
                chart.Series[0].DataPoints[2].Fill.SolidColor.Color = Color.DarkGray;
                chart.Series[0].DataPoints[3].Fill.FillType = FillFormatType.Solid;
                chart.Series[0].DataPoints[3].Fill.SolidColor.Color = Color.DarkOrange;
    
                //设置标签显示数值
                chart.Series[0].DataLabels.LabelValueVisible = true;
    
                //设置标签显示百分比
                chart.Series[0].DataLabels.PercentValueVisible = true;
    
                //设置圆环内径大小
                chart.Series[0].DoughnutHoleSize = 60;
    
                //保存文档
                presentation.SaveToFile("环形图.pptx", FileFormat.Pptx2013);
                System.Diagnostics.Process.Start("环形图.pptx");
            }
        }
    }
    View Code

     

    【示例 3 】创建混合型图表

    步骤 1 :添加using指令

    using Spire.Presentation;
    using Spire.Presentation.Charts;
    using Spire.Presentation.Drawing;
    using System;
    using System.Data;
    using System.Drawing;

    步骤 2 :新建文档

    Presentation presentation = new Presentation();

    步骤 3 :创建图表1:柱形图表

    //插入柱形图
    RectangleF rect = new RectangleF(40, 100, 650, 320);
    IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rec
    
    //添加表名
    chart.ChartTitle.TextProperties.Text = "2017季度销售情况";
    chart.ChartTitle.TextProperties.IsCentered = true;
    chart.ChartTitle.Height = 30;
    chart.HasTitle = true;
    
    //创建一个DataTable
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add(new DataColumn("季度", Type.GetType("System.String")));
    dataTable.Columns.Add(new DataColumn("销售额", Type.GetType("System.Int32")));
    dataTable.Columns.Add(new DataColumn("同比增长率", Type.GetType("System.Decimal")));
    dataTable.Rows.Add("1季度", 200, 0.6);
    dataTable.Rows.Add("2季度", 250, 0.8);
    dataTable.Rows.Add("3季度", 300, 0.6);
    dataTable.Rows.Add("4季度", 150, 0.2);            
    
    //将DataTable数据导入图表后台数据表
    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];
    
        }
    }
    
    //设置系列标签
    chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
    
    //设置类别标签      
    chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
    
    //为系列赋值
    chart.Series[0].Values = chart.ChartData["B2", "B5"];
    chart.Series[1].Values = chart.ChartData["C2", "C5"];

    步骤 4 :添加折线图

    //将系列2的图表类型改为折线图
    chart.Series[1].Type = ChartType.LineMarkers;
    
    //将系列2显示到第二根轴
    chart.Series[1].UseSecondAxis = true;
    
    //显示百分比数据
    chart.SecondaryValueAxis.NumberFormat = "0%";
    
    //不显示第二根轴的网格线
    chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None;
    
    //设置系列重叠
    chart.OverLap = -50;
    
    //设置类别间距
    chart.GapWidth = 200;

    步骤 5 :保存文件

    presentation.SaveToFile("混合图表.pptx", FileFormat.Pptx2010);
    System.Diagnostics.Process.Start("混合图表.pptx");

    混合型图表生成效果:

    全部代码:

    using Spire.Presentation;
    using Spire.Presentation.Charts;
    using Spire.Presentation.Drawing;
    using System;
    using System.Data;
    using System.Drawing;
    
    namespace 混合图表
    {
        class Program
        {
            static void Main(string[] args)
            {
                //新建一个PowerPoint文档
                Presentation presentation = new Presentation();
    
                //插入柱形图
                RectangleF rect = new RectangleF(40, 100, 650, 320);
                IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);
    
                //添加表名
                chart.ChartTitle.TextProperties.Text = "2017季度销售情况";
                chart.ChartTitle.TextProperties.IsCentered = true;
                chart.ChartTitle.Height = 30;
                chart.HasTitle = true;
    
                //创建一个DataTable
                DataTable dataTable = new DataTable();
                dataTable.Columns.Add(new DataColumn("季度", Type.GetType("System.String")));
                dataTable.Columns.Add(new DataColumn("销售额", Type.GetType("System.Int32")));
                dataTable.Columns.Add(new DataColumn("同比增长率", Type.GetType("System.Decimal")));
                dataTable.Rows.Add("1季度", 200, 0.6);
                dataTable.Rows.Add("2季度", 250, 0.8);
                dataTable.Rows.Add("3季度", 300, 0.6);
                dataTable.Rows.Add("4季度", 150, 0.2);            
    
                //将DataTable数据导入图表后台数据表
                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];
    
                    }
                }
    
                //设置系列标签
                chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
    
                //设置类别标签      
                chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
    
                //为系列赋值
                chart.Series[0].Values = chart.ChartData["B2", "B5"];
                chart.Series[1].Values = chart.ChartData["C2", "C5"];
    
                //将系列2的图表类型改为折线图
                chart.Series[1].Type = ChartType.LineMarkers;
    
                //将系列2显示到第二根轴
                chart.Series[1].UseSecondAxis = true;
    
                //显示百分比数据
                chart.SecondaryValueAxis.NumberFormat = "0%";
    
                //不显示第二根轴的网格线
                chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None;
    
                //设置系列重叠
                chart.OverLap = -50;
    
                //设置类别间距
                chart.GapWidth = 200;
    
                //保存打开文档
                presentation.SaveToFile("混合图表.pptx", FileFormat.Pptx2010);
                System.Diagnostics.Process.Start("混合图表.pptx");
            }
        }
    }
    View Code

    注:Spire.Presentation 支持创建73种不同的图表样式,如下图

    以上是本次关于“C# 创建PPT图表”的全部内容。

    如需转载,请注明出处。

  • 相关阅读:
    头指针与头结点的异同
    C:Users用户名AppData里面的文件可以删除吗
    mac os x在PC上安装
    迷宫问题
    对称自反传递
    判断
    离散实验模板
    离散实验二
    tp.5.0.21抛出错误
    php复制整个文件夹,此方法可过滤掉.svn文件夹
  • 原文地址:https://www.cnblogs.com/Yesi/p/9674740.html
Copyright © 2020-2023  润新知