Как я могу установить положение метки данных для круговой диаграммы Excel с помощью C #? - PullRequest
0 голосов
/ 23 мая 2019

Я создаю экспорт в Excel, который содержит несколько круговых диаграмм, которые динамически создаются на основе данных из базы данных, которые выгружаются в диапазон ячеек в электронной таблице. Мне нужно, чтобы метки данных для круговых диаграмм находились на внешнем конце круговой диаграммы. Метки данных по умолчанию настроены на лучшее соответствие.

Я пытался манипулировать позициями меток данных с помощью eLabelPosition, который имеет свойство OutEnd, но безуспешно. Это приводит к тому, что метки данных полностью исчезают.

Ниже приведен метод, который я использую для создания круговых диаграмм.

    private void AddPieChart(ExcelWorksheet worksheet, int firstDataRow, int firstDataColumn, int lastDataRow, int nextColumn, int firstColumn)
    {
        ExcelPieChart pieChart = worksheet.Drawings.AddChart(worksheet.Name.ToString() + " Pie Chart", eChartType.Pie3D) as ExcelPieChart;
        var serie = pieChart.Series.Add(ExcelCellBase.GetAddress(firstDataRow + 3, firstDataColumn, lastDataRow + 3, firstDataColumn),
                                        ExcelCellBase.GetAddress(firstDataRow + 3, firstColumn, lastDataRow + 3, firstColumn));

        pieChart.DataLabel.ShowCategory = true;
        pieChart.DataLabel.ShowLeaderLines = true;
        pieChart.DataLabel.Font.Bold = true;
        pieChart.DataLabel.Font.Size = 12;
        pieChart.Legend.Remove();
        pieChart.SetSize(500, 350);
        pieChart.SetPosition(lastDataRow + 5, 0, nextColumn - 1, 0);
        pieChart.Border.Fill.Color = Color.White;
        pieChart.Series.Chart.RoundedCorners = false;

        var pieSerie = (ExcelPieChartSerie)serie;
        pieSerie.DataLabel.Position = eLabelPosition.OutEnd;
    }

1 Ответ

0 голосов
/ 24 мая 2019

Похоже, что если у вас есть DataLabel свойства, назначенные вашему ExcelPieChart, а затем вы также пытаетесь назначить DataLabel свойства для ExcelPieChartSerie, это не относится к свойству ExcelPieChartSerie.Чтобы исправить это, удалите все свойства DataLabel на ExcelPieChart и вместо этого добавьте их к ExcelPieChartSerie, как показано ниже.

private void AddPieChart(ExcelWorksheet worksheet, int firstDataRow, int firstDataColumn, int lastDataRow, int nextColumn, int firstColumn)
        {
            ExcelPieChart pieChart = worksheet.Drawings.AddChart(worksheet.Name.ToString() + " Pie Chart", eChartType.Pie3D) as ExcelPieChart;
            var serie = pieChart.Series.Add(ExcelCellBase.GetAddress(firstDataRow + 3, firstDataColumn, lastDataRow + 3, firstDataColumn),
                                            ExcelCellBase.GetAddress(firstDataRow + 3, firstColumn, lastDataRow + 3, firstColumn));
            pieChart.Legend.Remove();
            pieChart.SetSize(500, 350);
            pieChart.SetPosition(lastDataRow + 5, 0, nextColumn - 1, 0);
            pieChart.Border.Fill.Color = Color.White;
            pieChart.Series.Chart.RoundedCorners = false;

            var pieSerie = (ExcelPieChartSerie)serie;
            pieSerie.DataLabel.ShowCategory = true;
            pieSerie.DataLabel.ShowLeaderLines = true;
            pieSerie.DataLabel.Font.Bold = true;
            pieSerie.DataLabel.Font.Size = 12;
            pieSerie.DataLabel.Position = eLabelPosition.OutEnd;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...