Как удалить одну DataLabel из диаграммы, созданной с помощью EPPlus и C # - PullRequest
0 голосов
/ 10 декабря 2018

enter image description here Можно ли каким-либо образом удалить одну DataLabel из диаграммы, созданной с помощью EPPlus и C #?

Я просто хочу удалить одну, а не настройкудля лунки Chart ... Как получить доступ к коллекции DataLabels (dLbls> dLbl)?

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

Также использовалась раскраска отдельной точки диаграммы с помощью этого: Неверный цвет легендыв диаграмме Excel, созданной с использованием EPPlus

(красная точка в правом верхнем углу)

Теперь я хочу удалить конкретную метку точки, как правило,применяется DataLabels ...

chart.DataLabel.ShowValue = true;

Любая подсказка приветствуется.

1 Ответ

0 голосов
/ 11 декабря 2018

Я нашел решение.Этот метод расширения делает свое дело ...

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...