Экспорт диаграммы Excel в экспорт PowerPoint

У меня проблема с попыткой встроить диаграммы Excel в PowerPoint через Interop API с использованием C #. Мне нужно, чтобы это работало в Office2003.

Процесс, которым я следую, заключается в том, что я создаю PowerPoint из шаблона с помощью API взаимодействия. Затем я вставляю новый слайд для каждой диаграммы и на эти слайды добавляю объект OLE Excel.Chart. Пока все хорошо. Затем я захожу в эту книгу, меняю данные и использую мастер диаграмм для обновления диаграммы на первом листе. Наконец, я закрываю книгу Excel.

Проблема в том, что диаграмма не отображается правильно в созданных слайдах PowerPoint. Диаграмма адаптирована с измененными данными, но все действия на самой диаграмме, такие как изменение заголовка, диапазона данных, типа диаграммы и т. Д., Не отображаются.

Становится страннее. Когда в PowerPoint я щелкаю (неправильно отображенную) сгенерированную диаграмму и выбираю «открыть» или «изменить», диаграмма немедленно обновится до правильных настроек. Когда я закрываю диаграмму и возвращаюсь в PowerPoint, диаграмма отображается правильно.

Я потратил часы и часы, чтобы понять, что происходит, но почему-то ничего не работает. Я пытался позвонить:

  • PowerPoint.Application.ActivePresenation.UpdateLinks () после создания всех диаграмм (это проблема OLE?).
  • Chart.Refresh ();
  • Workbook.RefreshAll ();

Может кто-нибудь подскажет, что нужно делать? Я отправлю свой код, который вставляет диаграммы ниже.

//Add the Workbook
Excel.Workbook workbook =
(Excel.Workbook)slide.Shapes.AddOLEObject(basePoint.X, basePoint.Y,
chartSize.Width, chartSize.Height,
MsoTriState.msoFalse).OLEFormat.Object;

//update the worksheet with data
Excel.Worksheet datasheet =
(Excel.Worksheet)workbook.Worksheets["Sheet1"];
datasheet.Cells.ClearContents();

//set table contents
//<<SNIP code that fills data sheet with contents from our custom
dataTable object>>

//fetch chart
Excel.Chart chart = (Excel.Chart)workbook.Charts["Chart1"];
Excel.Range range = datasheet.get_Range(datasheet.Cells[1, 1],
datasheet.Cells[dataTable.RowCount + 1, dataTable.ColumnCount + 1]);
chart.ChartWizard(range, Excel.XlChartType.xlBarStacked, Type.Missing,
Excel.XlRowCol.xlRows, 1, 1, true, dataTable.ChartTitle, "", "", "");

//release objects
datasheet = null;
chart = null;
range = null;
workbook.Close(false, Type.Missing, Type.Missing);
workbook = null;

person kurdt_sliver    schedule 03.12.2010    source источник
comment
У вас когда-нибудь это работало?   -  person DannyT    schedule 17.02.2011
comment
Попробуйте www.pptxbuilder.com   -  person Boosted_d16    schedule 14.05.2019


Ответы (1)


Мне показалось, что это сработало при обновлении существующей диаграммы:

Chart.Application.Update();

Мне было бы интересно узнать, работает ли это для вас при вставке новой диаграммы.

person morecraf    schedule 17.08.2011