繁体   English   中英

如何使用C#设置Excel饼图的数据标签位置?

[英]How can I set the Data Label position for an Excel pie chart using C#?

我正在创建一个Excel导出,其中包含几个饼图,这些饼图是根据数据库中的数据动态创建的,该数据库被转储到电子表格中的一系列单元格中。 我需要将饼图的数据标签放在饼图的外端。 默认情况下,数据标签设置为最适合。

我试图用eLabelPosition操纵数据标签位置, 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;
    }

看来,如果你有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;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM