1. 程式人生 > >C# 新增、修改、刪除Excel圖表資料標籤

C# 新增、修改、刪除Excel圖表資料標籤

圖表中,圖表資料標籤以資料化形式表現圖表中的特定資料,可增強圖表的可讀性。我們可以對圖表新增資料標籤,也可以對已有的資料標籤進行修改或者刪除,下面將通過C#程式碼形式來實現。

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

dll檔案獲取及引用:

方法1:通過官網下載包。下載後,解壓檔案,安裝Bin資料夾下的程式。安裝後,將安裝路徑下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");
        }
    }
}

 

執行程式後可檢視資料標籤刪除效果。

 

(本文完)

&n