Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Word中的图表互操作_C#_Charts_Interop_Ms Word - Fatal编程技术网

C# Word中的图表互操作

C# Word中的图表互操作,c#,charts,interop,ms-word,C#,Charts,Interop,Ms Word,我在尝试通过MSWord interop更新图表时遇到了大量问题。我只想在word文档中的图表上设置值,这样图表就可以更新为我应用程序中的值 导入Microsoft.Office.Interop.Graph.dll后,我完成了以下操作: 首先,它在Activate()方法上抛出一个COMException(metod在该对象上不可用)。如果希望如此,实际的OLEFormat.Object会抛出InvalidCastException(指定的强制转换无效) 不管怎么说,你的InlineShape是

我在尝试通过MSWord interop更新图表时遇到了大量问题。我只想在word文档中的图表上设置值,这样图表就可以更新为我应用程序中的值

导入Microsoft.Office.Interop.Graph.dll后,我完成了以下操作:

首先,它在Activate()方法上抛出一个COMException(metod在该对象上不可用)。如果希望如此,实际的OLEFormat.Object会抛出InvalidCastException(指定的强制转换无效)

不管怎么说,你的InlineShape是“MSGraph.Chart.8”吗

不要使用.Activate(),您需要确保OLE对象处于运行状态(我认为这就是为什么会得到无效的强制转换)

InlineShape chartShape = WordDocument.InlineShapes[2];
chartShape.Activate(); // for opening Chart in edit mode

// Convert the InlineShape into Chart type which is a part of Microsoft.Office.Interop.Graph
Microsoft.Office.Interop.Graph.Chart oChart = (Microsoft.Office.Interop.Graph.Chart) chartShape.OLEFormat.Object;
Microsoft.Office.Interop.Graph.DataSheet dataSheet = oChart.Application.DataSheet;

dataSheet.Cells[1, 1] = 10;
Microsoft.Office.Interop.Word.InlineShape chartShape = aDoc.InlineShapes[1];
if (chartShape.OLEFormat.ProgID == "MSGraph.Chart.8")
{
    object verb = Microsoft.Office.Interop.Word.WdOLEVerb.wdOLEVerbHide;
    chartShape.OLEFormat.DoVerb(ref verb);
    Graph.Chart oChart = (Graph.Chart)chartShape.OLEFormat.Object;
    Graph.DataSheet dataSheet = oChart.Application.DataSheet;
    dataSheet.Cells[1, 1] = 10;
}