Excel图表导出到PowerPoint导出

时间:2010-12-03 14:56:21

标签: .net excel export powerpoint

我在尝试通过PowerPoint在PowerPoint中嵌入Excel图表时遇到问题 Interop API使用C#。我需要让它适用于Office2003。

我正在遵循的流程是我从模板创建PowerPoint 使用interop API。然后我为每个图表插入一张新幻灯片 这些幻灯片我添加了Excel.Chart OLE对象。到目前为止一切都很顺利。那我去 进入该工作簿,更改数据,并使用chartWizard更新 第一张表上的图表。最后,我关闭了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;

1 个答案:

答案 0 :(得分:1)

在更新现有图表时,这似乎对我有用:

Chart.Application.Update();

我很想知道在插入新图表时这是否适合您。