Excel图表导出到PowerPoint导出

我有一个问题,试图通过Interop API使用C#在PowerPoint中embeddedExcel图表。 我需要得到这个Office2003的工作。

我遵循的过程是,我使用Interop API从模板创build了一个PowerPoint。 然后,我为每个图表插入一个新的幻灯片,并在这些幻灯片上添加一个Excel.Chart OLE对象。 一切都很好。 然后我进入该工作簿,更改数据,并使用图表向导更新第一张图表上的图表。 最后我closures了excel工作簿。

问题是在生成的PowerPoint幻灯片中图表无法正确显示。 图表适应于已更改的数据,但图表本身的所有操作(如更改标题,数据范围,图表types等等​​)均未显示。

它变得陌生。 在PowerPoint中单击(不正确渲染)生成的图表,然后select打开或编辑,图表将立即刷新到正确的设置。 当我closures图表并返回到powerpoint,图表正确呈现。

我花了好几个小时来弄清楚发生了什么,但不知何故,似乎没有任何工作。 我试着打电话给:

  • 所有图表生成后(这是OLE问题?)PowerPoint.Application.ActivePresenation.UpdateLinks()。
  • 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; 

更新现有图表时,这似乎适用于我:

 Chart.Application.Update(); 

插入新图表时,我很想看看这是否适用于您。