C# Word中的图表互操作
我在尝试通过MSWord interop更新图表时遇到了大量问题。我只想在word文档中的图表上设置值,这样图表就可以更新为我应用程序中的值 导入Microsoft.Office.Interop.Graph.dll后,我完成了以下操作: 首先,它在Activate()方法上抛出一个COMException(metod在该对象上不可用)。如果希望如此,实际的OLEFormat.Object会抛出InvalidCastException(指定的强制转换无效) 不管怎么说,你的InlineShape是“MSGraph.Chart.8”吗 不要使用.Activate(),您需要确保OLE对象处于运行状态(我认为这就是为什么会得到无效的强制转换)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是
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;
}