1

以下片段的正确调用是什么

// 这个抛出异常

Excel.Range range = worksheet.get_Range("A3", "B4");
myChart.SetSourceData(range.ToString(), Excel.XlRowCol.xlColumns); // Throws an 

// 抛出的异常

Exception Source:      Microsoft.Office.Interop.PowerPoint
Exception Type:        System.Runtime.InteropServices.COMException
Exception Message:     Error HRESULT E_FAIL has been returned from a 
call to a COM component.
Exception Target Site: SetSourceData

-------------------------------------------------- ------------

// 这个没有编译

myChart.SetSourceData(range, Excel.XlRowCol.xlColumns);

// 编译错误

1>  error CS1502: The best overloaded method match for 'Microsoft.Office.Interop.
PowerPoint.Chart.SetSourceData(string, object)' has some invalid arguments
1>  error CS1503: Argument 1: cannot convert from 
'Microsoft.Office.Interop.Excel.Range' to 'string'
4

3 回答 3

1

SetSourceData以完全不同的方式运行,具体取决于您使用的是 Excel 库中的方法还是其他库(如 PowerPoint)中的方法:

Sub SetSourceData(Source As Range , [PlotBy]) Excel.Chart 的成员

Sub SetSourceData(Source As String , [PlotBy]) PowerPoint.Chart 的成员

在 PowerPoint 模型中,该方法需要一个字符串,该字符串包含包含源数据的图表数据范围的地址!

https://msdn.microsoft.com/en-us/library/office/ff746759.aspx?f=255&MSPPError=-2147217396

相同的方法在两个不同的 MSO 对象模型中以两种不同的方式运行。这就是聪明的微软!

于 2015-03-06T09:29:52.623 回答
0

这实际上很奇怪,大多数文档将第一个范围参数定义为范围对象,但这实际上应该作为字符串传递

wdChart.SetSourceData("Sheet1!$A$1:$B$4", oMissing); 
于 2013-03-20T19:26:08.927 回答
0

我认为这应该有效:

myChart.SetSourceData(dataSheet.Name + "!" + dataSheet.UsedRange.Address, Excel.XlRowCol.xlColumns);

更新:获取数据表名称很重要。如果您需要选择特定范围,而不是整个工作表,请将 dataSheet.UsedRange 替换为您的范围。我需要这个并对其进行了测试。有效。

于 2014-04-17T09:49:17.957 回答