Excel/Powerpoint Office Interop - 从Excel表格复制图表到PowerPoint幻灯片

问题描述:

我有一个Excel工作簿里面有多个图表。我创建了一个for循环来获取每张表中的图表。这工作没有错误。Excel/Powerpoint Office Interop - 从Excel表格复制图表到PowerPoint幻灯片

我遇到的问题是我无法导入多个图表,只有一个图表导入为图片而不是图表。

objChart.Copy(); 

完整的错误:

当我尝试导入多个图表,我在这条线得到一个COMException

An exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll but was not handled in user code 

Additional information: Exception from HRESULT: 0x800A03EC 

这里是我的全部方法:

public int ImportExcelChartsFromWorkbookToSlides(int startingSlideIndex, string workbookPath, string[] slideTitles) 
{ 
    int slideIndex = startingSlideIndex; 
    int titleIndex = 0; 
    EXCL.Application objExclApp = new EXCL.Application(); 
    EXCL.Workbook objWorkbook = objExclApp.Workbooks.Open(workbookPath, Editable: false); 
    foreach (EXCL.Worksheet objSheet in objWorkbook.Worksheets) 
    { 
     foreach (EXCL.ChartObject objChart in objSheet.ChartObjects()) 
     { 
      AddTitleOnlySlide(slideIndex); 
      SetTitleOnlySlideTitle(slideTitles[titleIndex]); 

      // Copy Chart from Sheet to Slide 
      objChart.Copy(); 

      PPT.ShapeRange objShapeRange = objSlide.Shapes.Paste(); 

      // TODO PARAMETER 
      objShapeRange.Left = 10; 
      objShapeRange.Top = 100; 

      slideIndex++; 
      titleIndex++; 
     } 
    } 
    return slideIndex; 
} 

有没有人看到这个代码的任何问题?

UPDATE

如果我改变这一行:

objChart.Copy(); 

这样:

objChart.CopyPicture(); 

我没有问题..可能是什么造成的?

我设法用objChart.CopyPicture();来解决这个问题,但这是causing crashes对于一些用户,所以我落得这样做的:

string chartPath = [email protected]"{workbookPath.Substring(0, workbookPath.LastIndexOf("\\") + 1)}{DateTime.Now.Ticks}.png"; 
objChart.Chart.Export(chartPath, "PNG", false); 
objSlide.Shapes.AddPicture2(chartPath, MsoTriState.msoFalse, MsoTriState.msoTrue, chartPosLeft, chartPosTop, compress: MsoPictureCompress.msoPictureCompressFalse);