Поэтому я добавил процентные записи, но не могу скрыться от диаграммы и показать их в верхней середине каждой области метки.
Я попробовал решение для некоторых статей ( https://stackoverflow.com/a/9036445/11010986 ), но не вижу опции LoadEntries в OfficeOpenXml.Drawing.Chart
Код: Выделить всё
chart1.Legend.LoadEntries(chart1.Legend.LegendEntries().Count).Delete()
Изменить 1:
Данные для диаграммы:

Блок кода C#:
Код: Выделить всё
dynamic DataList5 = new
{
label = new List() { "PDD1", "PDD2", "PDD3" },
modeler = new { Category1 = new List() { 1, 1, 1 }, Category2 = new List() { 0, 0, 0 } },
tester = new { Category1 = new List() { 2, 2, 2 }, Category2 = new List() { 2, 2, 2 } },
percentage = new List() { 150, 200, 10 }
};
if (DataList5.label.Count > 0)
{
int j = 0;
for (int i = 0; i < DataList5.label.Count * 2; i++)
{
if (i % 2 == 0)
{
ws2.Cells[i + 2, 2].Value = DataList5.label[j];
ws2.Cells[i + 2, 3].Value = "Category 1";
ws2.Cells[i + 2, 4].Value = DataList5.modeler.Category1[j];
ws2.Cells[i + 2, 5].Value = DataList5.tester.Category1[j];
ws2.Cells[i + 2, 6].Value = DataList5.percentage[j];
}
else
{
ws2.Cells[i + 2, 3].Value = "Category 2";
ws2.Cells[i + 2, 4].Value = DataList5.modeler.Category2[j];
ws2.Cells[i + 2, 5].Value = DataList5.tester.Category2[j];
j++;
}
}
}
else
{
ws2.Cells[2, 2].Value = "No Data Found";
}
var chart1 = ws1.Drawings.AddChart("chart1", eChartType.ColumnStacked);
chart1.SetPosition(1, 0, 0, 0);
chart1.SetSize(1800, 400);
chart1.Style = eChartStyle.Style12;
if (DataList5.label.Count > 0)
{
var series1 = chart1.Series.Add(ws2.Cells["D2:D" + (DataList5.label.Count * 2 + 1)], ws2.Cells["B2:C" + (DataList5.label.Count * 2 + 1)]);
var series2 = chart1.Series.Add(ws2.Cells["E2:E" + (DataList5.label.Count * 2 + 1)], ws2.Cells["B2:C" + (DataList5.label.Count * 2 + 1)]);
//percentage series
//var series3 = chart1.Series.Add(ws2.Cells["F2:F" + (DataList5.label.Count * 2 + 1)], ws2.Cells["B2:C" + (DataList5.label.Count * 2 + 1)]);
series1.Fill.Color = Color.FromArgb(255, 0, 112, 192);
series2.Fill.Color = Color.FromArgb(255, 239, 125, 49);
//Show percentage for each PDD1 label
////chart1.Legend.LoadEntries(chart1.Legend.LegendEntries().Count).Delete();
series1.Header = "Modeler";
series2.Header = "Tester";
//series3.Header = "Percentage";
}
else
{
var series1 = chart1.Series.Add(ws2.Cells["B2:C" + (DataList1.label.Count + 1)], ws2.Cells["B2:C" + (DataList1.label.Count + 1)]);
}
chart1.Title.Text = "Stacked bar chart example";

Для меня проблема с отображением процентов.
даже PDD1 должен находиться между первыми двумя столбцами, но здесь это не является серьезной проблемой.
У кого-нибудь есть идеи по поводу решения на C# EPPlus или OfficeOpenXML?
Подробнее здесь: https://stackoverflow.com/questions/790 ... nxml-or-ep