【问题标题】:custom datalabels in excel charts with C# using Microsoft Office Interop Excel使用 Microsoft Office Interop Excel 使用 C# 在 excel 图表中自定义数据标签
【发布时间】:2023-03-10 10:00:01
【问题描述】:

我使用 Microsoft Office Interop Excel 在 C# 中创建了一个 Excel 图表,但无法自定义数据标签

SeriesCollection seriesCollection7 = myChart7.Chart.SeriesCollection();
Series series7 = seriesCollection7.NewSeries();
series7.XValues = xValues7;
series7.Values = values7;
Excel.DataLabel dl1 = (Excel.DataLabel)series7.DataLabels(); // ERROR HERE
dl1.NumberFormat = "#0.0%";

【问题讨论】:

    标签: c# excel visual-studio charts interop


    【解决方案1】:

    您可以尝试以下代码来自定义数据标签。

            Excel.Application app = new Excel.Application();
            app.DisplayAlerts = false;
            object misValue = System.Reflection.Missing.Value;
            Excel.Workbook workbook = app.Workbooks.Open("D:\\3.XLSX");
            Excel.Worksheet worksheet = workbook.ActiveSheet;
            Excel.Range xlRange = worksheet.UsedRange;
            Excel.ChartObjects xlCharts = (Excel.ChartObjects)worksheet.ChartObjects(Type.Missing);
            Excel.ChartObject myChart = worksheet.ChartObjects(1);
            Excel.Chart chartPage = myChart.Chart;
            Excel.Series series1 = (Excel.Series)chartPage.SeriesCollection(1);
            series1.HasDataLabels = true;
            Excel.DataLabel dl1 = series1.DataLabels(1);
            dl1.Text = "Test1";
            workbook.Save();
            workbook.Close(true, misValue, misValue);
    

    我制作了一个柱形图,并设置了第一个 Datalabel 的第一个点。

    如下:

    【讨论】:

    • 我会试试你的选择。但是我很难让 SeriesCollection 接受 1 或其他东西作为 () 之间的参数。
    • 我发现的解决方案是这样的。 // 这将添加数据标签 chartPage7.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowValue, false, true, false, false, false, true, true); // 设置标签 // 这将改变 dalabels 格式 series7.DataLabels().NumberFormat = "#,0%";
    • @EstebanSantos,当您使用 SeriesCollection(1); 时出现什么错误?如果您找到了解决办法,请回答并标记。
    • 嗨。我在一个孤立的示例中尝试了您的解决方案,并且效果很好。我终于明白了处理括号中的参考号的方法。
      chartPage7.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowValue, false, true, false, false, false, true, true); series7.HasDataLabels = true; Excel.DataLabel dl1 = series7.DataLabels(0); dl1.NumberFormat = "#,0%";

      我的第一个选项也起作用了。 series7.DataLabels().NumberFormat = "#,0%" 谢谢
    【解决方案2】:

    选项 1(感谢 @Jack-J-Jun-MSFT)

            chartPage7.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowValue, false, true, false, false, false, true, true);
            series7.HasDataLabels = true;
            Excel.DataLabel dl1 = series7.DataLabels(0);
            dl1.NumberFormat = "#,0%";
    

    选项 2

            chartPage7.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowValue, false, true, false, false, false, true, true); // set label
    
            series7.DataLabels().NumberFormat = "#,0%";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多