如何从使用 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);
}
我只想删除一个,而不是孔图的设置... 如何访问 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);
}