我正在尝试复制 excel 图表,然后使用 C++/CLI 将它们粘贴到 PowerPoint 中,尽管在尝试使用 Copy() 方法时遇到了困难。这是我现在代码的简化版本:
Worksheet = dynamic_cast<Excel::Worksheet^>(WS[3]);
chartObjects = dynamic_cast<Excel::ChartObjects^>(Worksheet->ChartObjects(paramMissing));
existingChartObject = dynamic_cast<Excel::ChartObject^>(chartObjects->Item(2));
existingChartObject->Copy();
shapeRange = Slide->Shapes->Paste();
但是当我尝试这个时,它给了我一个错误:
An unhandled exception of type 'System.NullReferenceException' occurred in Excel To PPT.exe
Additional information: Object reference not set to an instance of an object.
现在我的 Excel 工作簿从表 3 开始,每张表上有6 个图表。如果我复制表 3 上的所有图表并将它们粘贴到这样的幻灯片上。
将此尝试称为一次
for(count = 1, count <= 6; ++count){
Worksheet = dynamic_cast<Excel::Worksheet^>(WS[2]);
chartObjects = dynamic_cast<Excel::ChartObjects^>(Worksheet->ChartObjects(paramMissing));
existingChartObject = dynamic_cast<Excel::ChartObject^>(chartObjects->Item(count));
existingChartObject->Copy();
shapeRange = Slide->Shapes->Paste();
}
然后没有抛出异常。现在,如果我尝试做同样的事情,但从图 2 而不是 1 开始,我会抛出异常。像这样:
将此尝试称为两次
for(count = 2, count <= 6; ++count){
Worksheet = dynamic_cast<Excel::Worksheet^>(WS[2]);
chartObjects = dynamic_cast<Excel::ChartObjects^>(Worksheet->ChartObjects(paramMissing));
existingChartObject = dynamic_cast<Excel::ChartObject^>(chartObjects->Item(count));
existingChartObject->Copy();
shapeRange = Slide->Shapes->Paste();
}
当我通过它并existingCharObject
在第二次尝试时将鼠标悬停在它不是空的并且看起来与尝试 1 中的完全相同。
为什么第二次尝试会抛出异常但第一次不会?我应该能够复制我想要的任何 excel ChartObject 吗?它迫使我从整个工作簿中的 ChartObject 1 开始,逐步向上,不允许我随机复制 ChartObjects。
如果您需要更多信息,请告诉我。我不想把我的整个项目都过去,这是项目中唯一给我带来问题的部分。