C# 用C语言更新Excel系列图表#

C# 用C语言更新Excel系列图表#,c#,excel,series,C#,Excel,Series,我正在用C#重新创建VBA程序,在更新系列图表时遇到了一个问题。我花了大量的时间在谷歌和论坛上为自己寻找问题的答案,但似乎无法找到答案 我要做的是更新一个系列图表,以查看工作表中不在图表所在位置的数据,并更新范围 我的问题是,当更新系列图表时,C#只接受一个范围。但是,系列图表所需的范围包含图纸名称,而范围不能包含文本(因此我相信)。 我需要重新创建的范围示例如下: =ANZ!$J$313:$J$737,ANZ!$M$313:$O$737 我目前拥有的代码是: CloudAllTrialsDa

我正在用C#重新创建VBA程序,在更新系列图表时遇到了一个问题。我花了大量的时间在谷歌和论坛上为自己寻找问题的答案,但似乎无法找到答案

我要做的是更新一个系列图表,以查看工作表中不在图表所在位置的数据,并更新范围

我的问题是,当更新系列图表时,C#只接受一个范围。但是,系列图表所需的范围包含图纸名称,而范围不能包含文本(因此我相信)。 我需要重新创建的范围示例如下:

=ANZ!$J$313:$J$737,ANZ!$M$313:$O$737
我目前拥有的代码是:

CloudAllTrialsDataPage = UpdateBook.Worksheets[CloudAllTrialsChartDataPage1];
LastRow = CloudAllTrialsDataPage.Range["J:J"].Find(StartDate, Type.Missing, XlFindLookIn.xlValues, XlLookAt.xlWhole, XlSearchOrder.xlByRows, XlSearchDirection.xlNext, Type.Missing, Type.Missing, Type.Missing).Row;
FoundCell = CloudAllTrialsDataPage.Range["J:J"].Find(strDateLM, Type.Missing, XlFindLookIn.xlValues, XlLookAt.xlWhole, XlSearchOrder.xlByRows, XlSearchDirection.xlNext, Type.Missing, Type.Missing, Type.Missing).Row;
Excel.Range Range1 = CloudAllTrialsDataPage.Range["J" + FoundCell + ":J" + LastRow];
Excel.Range Range2 = CloudAllTrialsDataPage.Range["M" + FoundCell + ":O" + LastRow];
Range DataRange = CloudAllTrialsDataPage.Range[Range1].Address + CloudAllTrialsDataPage.Range[Range2].Address;
chartObject2 = CloudAllTrialsChartPage.ChartObjects(Type.Missing);
myChart = (Excel.ChartObject)chartObject2.Item("Monthly2");
myChart.Chart.SetSourceData(DataRange);
所有的代码都正确地拉入并一直工作,直到将范围插入图表为止。我尝试了各种不同的解决方法,但总是遇到将工作表名称添加到范围的问题

如有任何帮助或指点,将不胜感激

多谢各位


免责声明:我是外行,如果我的任何术语“不正确”,请原谅。

好的。所以我发现了这两个问题

1) 如果你参考了正确的图表,这通常会有所帮助

2) 要将两个单独的范围合并到系列图表范围中,请使用get_范围。如果将变量设置为

Excel.Range ChartRange = datapage.get_Range("A1:A6","C1:C6");
这将创建一个包含两个范围的范围。由于声明的范围与图表不在同一张图纸上,因此会自动填写图纸名称

我最终确定的代码是

Excel.Range chartRange;
Excel.ChartObjects xlCharts = (Excel.ChartObjects)CloudAllTrialsChartPage.ChartObjects(Type.Missing);
Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Item("DailyView");
Excel.Chart chartPage = myChart.Chart;
chartRange = CloudAllTrialsDataPage.get_Range("J" + FoundCell + ":J" + LastRow + ",M" + FoundCell + ":O" + LastRow);
chartPage.SetSourceData(chartRange, Missing.Value);

我就把这个留在这里,以防其他人需要。令人惊讶的是,关于更新系列图表的建议很少。(我可以找到。)

好的。所以我发现了这两个问题

1) 如果你参考了正确的图表,这通常会有所帮助

2) 要将两个单独的范围合并到系列图表范围中,请使用get_范围。如果将变量设置为

Excel.Range ChartRange = datapage.get_Range("A1:A6","C1:C6");
这将创建一个包含两个范围的范围。由于声明的范围与图表不在同一张图纸上,因此会自动填写图纸名称

我最终确定的代码是

Excel.Range chartRange;
Excel.ChartObjects xlCharts = (Excel.ChartObjects)CloudAllTrialsChartPage.ChartObjects(Type.Missing);
Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Item("DailyView");
Excel.Chart chartPage = myChart.Chart;
chartRange = CloudAllTrialsDataPage.get_Range("J" + FoundCell + ":J" + LastRow + ",M" + FoundCell + ":O" + LastRow);
chartPage.SetSourceData(chartRange, Missing.Value);

我就把这个留在这里,以防其他人需要。令人惊讶的是,关于更新系列图表的建议很少。(我可以找到。)

语法帮助不完全是我想要的,而是他们所说的“每天都是学校的一天”。语法帮助不完全是我想要的,而是他们所说的“每天都是学校的一天”。