Skip to content

Commit ff5cd29

Browse files
authored
Fixes bug for being unable to have multiple datalabels in same series (#1489)
1 parent e70a836 commit ff5cd29

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

src/EPPlus/Drawing/Chart/ExcelChartDataLabelCollection.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,12 @@ public ExcelChartDataLabelItem Add(int index)
5252
{
5353
throw (new ArgumentException($"Data label with index {index} already exists"));
5454
}
55-
return CreateDataLabel(ix);
55+
return CreateDataLabel(index);
5656
}
5757
}
5858

5959
private ExcelChartDataLabelItem CreateDataLabel(int idx)
6060
{
61-
var pos = GetItemAfter(idx);
6261
XmlElement element = CreateElement(idx);
6362
var dl = new ExcelChartDataLabelItem(_chart, NameSpaceManager, element, "dLbl", SchemaNodeOrder) { Index=idx };
6463

@@ -80,11 +79,11 @@ private XmlElement CreateElement(int idx)
8079
if (idx < _list.Count)
8180
{
8281
pointNode = TopNode.OwnerDocument.CreateElement("c", "dLbl", ExcelPackage.schemaMain);
83-
_list[idx].TopNode.InsertBefore(pointNode, _list[idx].TopNode);
82+
TopNode.InsertBefore(pointNode, _list[idx].TopNode);
8483
}
8584
else
8685
{
87-
pointNode = (XmlElement)CreateNode("c:dLbl");
86+
pointNode = (XmlElement)CreateNode("c:dLbl", false, true);
8887
}
8988
return pointNode;
9089
}

src/EPPlusTest/Drawing/Chart/DatalabelTest.cs

+30
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using OfficeOpenXml;
33
using OfficeOpenXml.Drawing.Chart;
44
using System;
5+
using System.Drawing;
56

67
namespace EPPlusTest.Drawing.Chart
78
{
@@ -293,5 +294,34 @@ void AdjustDataLabelItem(ref ExcelChartDataLabelItem label)
293294

294295
label.Layout.ManualLayout.Left = -30;
295296
}
297+
298+
[TestMethod]
299+
public void TwoLabelsOnSameSeries()
300+
{
301+
using (var pck = OpenPackage("ColumnChartStuffEasy.xlsx", true))
302+
{
303+
var cSheet = pck.Workbook.Worksheets.Add("ColumnChartSheet");
304+
305+
var range = cSheet.Cells["A1:C3"];
306+
var table = cSheet.Tables.Add(range, "DataTable");
307+
table.ShowHeader = false;
308+
309+
range.Formula = "ROW() + COLUMN()";
310+
311+
cSheet.Calculate();
312+
313+
var sChart = cSheet.Drawings.AddBarChart("simpleChart", eBarChartType.ColumnStacked);
314+
315+
sChart.Series.Add(cSheet.Cells["A1:A3"]);
316+
sChart.Series.Add(cSheet.Cells["B1:B3"]);
317+
sChart.Series.Add(cSheet.Cells["C1:C3"]);
318+
319+
sChart.Series[2].DataLabel.DataLabels.Add(0);
320+
sChart.Series[2].DataLabel.DataLabels.Add(2);
321+
sChart.Series[2].DataLabel.DataLabels.Add(1);
322+
323+
SaveAndCleanup(pck);
324+
}
325+
}
296326
}
297327
}

0 commit comments

Comments
 (0)