【发布时间】:2017-08-14 11:48:06
【问题描述】:
我有一个 Excel 工作簿,里面有多个图表。我创建了一个 for 循环,用于获取每张工作表中的图表。这可以正常工作。
我遇到的问题是我无法导入多个图表,只能导入一个,而且它作为图片而不是图表导入。
当我尝试导入多个图表时,我在这一行得到一个COMException:
objChart.Copy();
完全错误:
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;
}
有人发现这段代码有什么问题吗?
更新
如果我改变这一行:
objChart.Copy();
到这里:
objChart.CopyPicture();
我没有问题.. 是什么原因造成的?
【问题讨论】:
标签: c# excel interop office-interop excel-interop