zoukankan      html  css  js  c++  java
  • C# 添加、修改、删除Excel图表数据标签

    图表中,图表数据标签以数据化形式表现图表中的特定数据,可增强图表的可读性。我们可以对图表添加数据标签,也可以对已有的数据标签进行修改或者删除,下面将通过C#代码来实现。

    使用工具:Spire.XLS for .NET pack

    dll文件获取及引用:

    方法1通过官网下载包。下载后,解压文件,安装程序。安装后,将安装路径下Bin文件夹下的Spire.Xls.dll文件添加引用至vs项目程序。如下所示:

    方法2可通过Nuget下载。

    C# 示例

    【添加数据标签】

    using Spire.Xls;
    using Spire.Xls.Charts;
    using System.Drawing;
    
    
    namespace AddDataLables
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载测试文档
                Workbook workbook = new Workbook();
                workbook.LoadFromFile("test.xlsx");
    
                //获取第一个工作薄以及其中的第一个图表
                Worksheet sheet = workbook.Worksheets[0];
                Chart chart = sheet.Charts[0];
    
                //获取图表中的指定系列
                ChartSerie serie1 = chart.Series[1];
                //添加数据标签,并设置数据标签样式
                serie1.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
                serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Fill.FillType = ShapeFillType.SolidColor;
                serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Fill.ForeColor = Color.White;
                serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Border.Pattern = ChartLinePatternType.Solid;
                serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Border.Color = Color.Green;
    
    
                ////使用文档中其他单元格的数据自定义datalabel
                //ChartSerie serie2 = chart.Series[2];
                //serie2.DataPoints.DefaultDataPoint.DataLabels.ValueFromCell = sheet.Range["B4:E4"];
                ////添加数据标注
                //serie2.DataPoints.DefaultDataPoint.DataLabels.HasWedgeCallout = true;
               
                //保存文档
                workbook.SaveToFile("AddDataLable.xlsx");
                System.Diagnostics.Process.Start("AddDataLable.xlsx");
            }
        }
    }

    数据标签效果:

    数据标注效果:

     

    【编辑/修改数据标签】

    这里以上面代码中添加的数据标注为例,进行修改等操作。

    using Spire.Xls;
    using Spire.Xls.Charts;
    using System.Drawing;
    
    
    namespace ModifyDataLable
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载文档
                Workbook workbook = new Workbook();
                workbook.LoadFromFile("AddDataLable.xlsx");
    
                //获取第一个工作表以及表里面的第一个图表
                Worksheet sheet = workbook.Worksheets[0];
                Chart chart = sheet.Charts[0];
    
                //获取图表系列及数据标签
                ChartSerie chartSeries = chart.Series[2];
                ChartDataLabels cslabel = chartSeries.DataPoints[1].DataLabels;
    
    
                cslabel.HasLegendKey = true;//设置显示图例项标示
                cslabel.Position = DataLabelPositionType.Center;//设置数据标签的位置居中
    
                //自定义数据标签的位置,默认的原点在图表左上角;
                cslabel.IsYMode = true;
                cslabel.IsXMode = true;
                cslabel.X = 1100;
                cslabel.Y = 400;
    
                //设置显示引导线(任意设置一个DataPoint会对整个系列生效,但是只有自定义数据标签位置之后才会显示效果)
                cslabel.ShowLeaderLines = true;
    
                //取消楔形标注(任意设置一个DataPoint会对整个系列生效)
                cslabel.HasWedgeCallout = false;
    
                //保存
                workbook.SaveToFile("ModifyDatalable.xlsx");
                System.Diagnostics.Process.Start("ModifyDatalable.xlsx");
            }
        }
    }

    数据标签修改效果:

    【删除数据标签】

    using Spire.Xls;
    using Spire.Xls.Charts;
    
    namespace DeleteDataLable
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载文档
                Workbook workbook = new Workbook();
                workbook.LoadFromFile("AddDataLable.xlsx");
    
                //获取第一个工作表以及表里面的第一个图表
                Worksheet sheet = workbook.Worksheets[0];
                Chart chart = sheet.Charts[0];
    
                //删除所有系列的数据标签
                for (int i = 0; i < chart.Series.Count; i++)
                {
                    ChartSerie chartSeries = chart.Series[i];
                    chartSeries.DataPoints.Clear();
                }
    
    
                //删除指定数据系列的数据标签
                //ChartSerie chartSeries = chart.Series[2];
                //chartSeries.DataPoints.Clear();
    
    
                //删除指定系列中数据标签的指定值
                //ChartSerie chartSeries = chart.Series[2];
                //ChartDataLabels cslabel = chartSeries.DataPoints[0].DataLabels;
                //cslabel.Text = " ";
                //cslabel.HasLegendKey = false;
    
    
                //保存文档
                workbook.SaveToFile("RemoveDataLable.xlsx");
                System.Diagnostics.Process.Start("RemoveDataLable.xlsx");
            }
        }
    }

    运行程序后可查看数据标签删除效果。

    (本文完)

  • 相关阅读:
    js生成cron表达式
    原生table控制tbody滚动而thead不滚动
    js记性
    oracle 多库表建立dblink查询
    java操作mysql数据库备份
    java 抓取网页的图片
    ZOJ 3485 Identification Number【模拟】【暴力】
    Codeforces 1037E Trips【图论】【dfs】
    Codeforces 1036C Classy Numbers 【数位dp】
    Codeforces 1036B Diagonal Walking v.2 【贪心】
  • 原文地址:https://www.cnblogs.com/Yesi/p/11757402.html
Copyright © 2011-2022 走看看