在 C# 中更新 Excel 系列图表
updating Excel Series Chart in C#
我正在用 C# 重新创建一个 VBA 程序,在更新系列图表时遇到了 运行 问题。我花了很多时间在 google 和论坛上寻找自己问题的答案,但似乎无法弄清楚。
我想要做的是更新系列图表以查看图表所在的作品sheet中的数据,并更新范围。
我的问题是更新系列图表时,C# 只接受一个范围。但是,系列图表需要的范围包含 sheet 名称,并且范围不能包含文本(所以我不得不相信)。
我需要重新创建的范围示例如下;
=ANZ!$J3:$J7,ANZ!$M3:$O7
我目前的代码是:
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);
所有代码都正确提取并正常工作,直到将范围插入图表。我尝试了各种不同的解决方法,但总是 运行 尝试将 sheet 名称添加到范围的问题。
如有任何帮助或指点,我们将不胜感激。
谢谢。
免责声明:我是外行,如果我的术语有任何不当之处,请见谅"incorrect"。
好的。所以我想出了我遇到的两个问题。
1) 如果您引用正确的图表通常会有所帮助。
2) 要将两个单独的范围组合成系列图表范围,请使用 get_Range。如果将变量设置为
Excel.Range ChartRange = datapage.get_Range("A1:A6","C1:C6");
这将创建一个包含两个范围的范围。由于声明的范围与图表不在同一个sheet上,所以自动填写sheet名称。
我确定的最终代码是;
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);
只是把它留在这里以防其他人需要它。令人惊讶的是,关于更新系列图表的建议很少。 (我能找到。)
我正在用 C# 重新创建一个 VBA 程序,在更新系列图表时遇到了 运行 问题。我花了很多时间在 google 和论坛上寻找自己问题的答案,但似乎无法弄清楚。
我想要做的是更新系列图表以查看图表所在的作品sheet中的数据,并更新范围。
我的问题是更新系列图表时,C# 只接受一个范围。但是,系列图表需要的范围包含 sheet 名称,并且范围不能包含文本(所以我不得不相信)。 我需要重新创建的范围示例如下;
=ANZ!$J3:$J7,ANZ!$M3:$O7
我目前的代码是:
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);
所有代码都正确提取并正常工作,直到将范围插入图表。我尝试了各种不同的解决方法,但总是 运行 尝试将 sheet 名称添加到范围的问题。
如有任何帮助或指点,我们将不胜感激。
谢谢。
免责声明:我是外行,如果我的术语有任何不当之处,请见谅"incorrect"。
好的。所以我想出了我遇到的两个问题。
1) 如果您引用正确的图表通常会有所帮助。
2) 要将两个单独的范围组合成系列图表范围,请使用 get_Range。如果将变量设置为
Excel.Range ChartRange = datapage.get_Range("A1:A6","C1:C6");
这将创建一个包含两个范围的范围。由于声明的范围与图表不在同一个sheet上,所以自动填写sheet名称。
我确定的最终代码是;
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);
只是把它留在这里以防其他人需要它。令人惊讶的是,关于更新系列图表的建议很少。 (我能找到。)