Graph.Chart взаимодействия в Word - PullRequest
       11

Graph.Chart взаимодействия в Word

0 голосов
/ 24 августа 2010

У меня огромные проблемы при обновлении графика через взаимодействие с MSWord. Все, что я хочу сделать, это установить значения на диаграмме в текстовом документе, чтобы график мог обновиться до значений в моем приложении.

Я сделал следующее (после импорта Microsoft.Office.Interop.Graph.dll):

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;

Сначала создается исключение COMException (этот метод недоступен для этого объекта) в методе Activate (). Если я надеюсь на это, фактический объект OLEFormat.Object создает исключение InvalidCastException (указанное приведение недействительно).

Как-нибудь удалось заставить что-то подобное работать?

1 Ответ

1 голос
/ 24 августа 2010

Является ли InlineShape "MSGraph.Chart.8"?

Не используйте .Activate (), вам нужно убедиться, что объект OLE находится в рабочем состоянии (я думаю, именно поэтому выполучить неверный актерский состав).

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...