使用office interop从图表范围中删除行

时间:2014-08-12 14:32:21

标签: c# ms-word office-interop

我使用c#office interop将图表插入到word文档中。

我将图表插入到文档中,然后从图表关联的工作簿中访问ActiveSheet以更改单元格的值以显示我想要的数据。我目前工作的代码可以在下面看到。

 Application application = new ApplicationClass();

            var paragraph = CreateParagraph();

            var chart = application.ActiveDocument.InlineShapes.AddChart(XlChartType.xlColumnClustered, paragraph.Range);

            var activeSheet = chart.Chart.ChartData.Workbook.ActiveSheet;

            activeSheet.Cells[2, 1] = "YTD LM Sales";
            activeSheet.Cells[3, 1] = "YTD LM Budget Value";
            activeSheet.Cells[4, 1] = "YTD LY LM Sales";
            activeSheet.Rows[5] = null;

            for (int i = 0; i <= results.Count() - 1; i++)
            {
                var sale = results.ElementAt(i);

                activeSheet.Cells[1, i + 2] = sale.FinancialPLN;
                activeSheet.Cells[2, i + 2] = GetStringValueOfNumber(sale.YtdLmSales);
                activeSheet.Cells[3, i + 2] = GetStringValueOfNumber(sale.YtdLmBudgetValue);
                activeSheet.Cells[4, i + 2] = GetStringValueOfNumber(sale.YtdLyLmSales);
            }

但是,默认情况下,创建的图表在活动工作表中有4行,在图表上显示4个系列。我遇到的问题是我只有3行我想要使用的实际数据。

因此,第四个默认行将在图表中显示一些默认值。

我想一起删除这一行,并确保图表不显示它。我已经尝试将值清零,但是图表只有空格,系列应该是。

有谁知道如何设置以这种方式创建的图表的范围,或者只是从范围中删除一行?

1 个答案:

答案 0 :(得分:0)

你能尝试一下以下几点:

chart.Chart.SeriesCollection(4).Delete();

你需要chart.Chart因为图表是InlineShape并且不了解图表行为。

我通过在Excel中记录宏并从图表中删除系列,然后查看代码,找到了SeriesCollection(4).Delete()行为。