如何从使用 EPPlus 和 C# 制作的图表中删除单个 DataLabel

How to remove a single DataLabel from a Chart made with EPPlus and C#

是否可以通过任何方式从使用 EPPlus 和 C# 制作的图表中删除单个 DataLabel?

我只想删除一个,而不是孔图的设置... 如何访问 DataLabel 集合 (dLbls > dLbl)?

var chart = (ExcelBarChart)worksheet.Drawings.AddChart("Chart", eChartType.ColumnStacked);

还使用以下方法为图表的单个点着色:

(右上角红点)

现在我想删除一个点的特定标签,一般应用DataLabels...

chart.DataLabel.ShowValue = true;

感谢任何提示。

我找到了解决办法。这个扩展方法可以解决问题...

public static void RemoveDataLabel(this ExcelBarChart chart, int serieNumber, int objectNumber)
{
    var chartXml = chart.ChartXml;

    var nsa = chart.WorkSheet.Drawings.NameSpaceManager.LookupNamespace("a");
    var nsuri = chartXml.DocumentElement.NamespaceURI;

    var nsm = new XmlNamespaceManager(chartXml.NameTable);
    nsm.AddNamespace("a", nsa);
    nsm.AddNamespace("c", nsuri);

    var dLbls = chart.ChartXml.SelectSingleNode(@"c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[c:idx[@val='" + serieNumber + "']]/c:dLbls", nsm);

    var dLbl = chartXml.CreateNode(XmlNodeType.Element, "dLbl", nsuri);

    var idx = chartXml.CreateNode(XmlNodeType.Element, "idx", nsuri);
    var valueIdx = chartXml.CreateAttribute("val", nsuri);
    valueIdx.Value = objectNumber.ToString();
    idx.Attributes.Append(valueIdx);
    dLbl.AppendChild(idx);

    var delete = chartXml.CreateNode(XmlNodeType.Element, "delete", nsuri);
    var valueDelete = chartXml.CreateAttribute("val", nsuri);
    valueDelete.Value = "1";
    delete.Attributes.Append(valueDelete);
    dLbl.AppendChild(delete);

    dLbls.AppendChild(dLbl);
}