C#でExcelチャートデータラベルの追加、変更、削除する方法
チャートでは、チャートデータラベルを使って、チャート内の特定のデータをデータの形式で表し、チャートの読みやすさを向上させることができます。グラフにデータラベルを追加したり、既存のデータラベルを変更したりまたは削除したりできます。以下は、C#コードを介して実装されます。
使用したツール:Spire.XLS for .NET pack
方法1:公式ウェブサイトからパッケージをダウンロードします。ダウンロードした後、ファイルを解凍し、Binフォルダーの下にプログラムをインストールします。インストール後、vsプロジェクトプログラムへのインストールパスのBinフォルダーにあるSpire.Xls.dllファイルへの参照を追加します。効果は次のようになります:
方法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("C:\\Users\\Administrator\\Desktop\\example.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;
//データラベルを追加し、データラベルスタイルを設定する
//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;
namespace ModifyDataLable
{
class Program
{
static void Main(string[] args)
{
//ドキュメントをロードする
Workbook workbook = new Workbook();
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\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;
//表示ガイドラインの設定する
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("C:\\Users\\Administrator\\Desktop\\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");
}
}
}
プログラムを実行した後、データラベルの削除効果を表示できます。
今回のExcelチャートデータラベルの追加、変更、削除する方法は以上でした、最後まで読んでいただきありがとうございました。
Author And Source
この問題について(C#でExcelチャートデータラベルの追加、変更、削除する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/iceblue/items/6d8a98f3b26e3f251a85著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .