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);