Is it possible in any way to remove a single DataLabel from a Chart made with EPPlus and C#?
I just want to remove a single one, not the setting for the hole Chart... How can the collection of DataLabels be accessed (dLbls > dLbl)?
var chart = (ExcelBarChart)worksheet.Drawings.AddChart("Chart", eChartType.ColumnStacked);
Also made use of coloring a individual point of Chart with this: Legend color is incorrect in excel chart created using EPPlus
(The red point at the upper right)
Now I want to remove a specific label of a point, with generally applied DataLabels...
chart.DataLabel.ShowValue = true;
Any hint appreciated.
I figured out a solution. This Extension method is doing the trick...
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);
}