C# set Excel 图表源

C# set Excel chart source

我正在尝试做某事,但遇到困难。我的想法是,我只是循环 excel sheet 并找到所有图表,将其设置为源,然后将 sheet 移动到工作簿的末尾。

我正在使用 C# 并且 Microsoft.Office.Interop.Excel

编辑

我需要 foreach 循环的原因是因为我不知道在 sheet 上会有多少图表,因为我想让用户只将图表放在 sheet , 在我从 SQL 动态获取数据并将其放入另一个 sheet 后,我需要更新这些图表

这是我到目前为止尝试过的

// Get source for charts
Excel.Range ChartSourceRange = xlWorkSheet3.Range["A4", "G5"];

// Here becomes the problem ...I don't know how to go foreach in excel sheet
foreach (Microsoft.Office.Interop.Excel.ChartObject item in xlWorkBook.Sheets[2])
{
    item.Chart.SetSourceData(ChartSourceRange);
}

int totalSheets = xlWorkBook.Sheets.Count;
xlWorkBook.Sheets[2].Move(xlWorkBook.Sheets[totalSheets]);

这段代码给我例外...

Unable to cast COM object of type 'System.__ComObject' to 
interface type 'System.Collections.IEnumerable'. 
This operation failed because the QueryInterface call on the COM component for the 
interface with IID '{496B0ABE-CDEE-11D3-88E8-00902754C43A}' failed 
due to the following error: 'No such interface 
supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))' 
and the COM component does not support IDispatch::Invoke calls for DISPID_NEWENUM.

能不能给我折腾一下,怎么改这段代码,让我的foreach可以通过excel sheet?

谢谢

尝试:

foreach (xl.ChartObject item in xlWorkBook.Sheets[2].ChartObjects())
{
     item.Chart.SetSourceData(ChartSourceRange);
}

此外,我建议您查看 以了解如何在 C#(或 VB.Net)中使用 excel。既然是COM对象,需要适当释放: