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对象,需要适当释放:
我正在尝试做某事,但遇到困难。我的想法是,我只是循环 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);
}
此外,我建议您查看