PowerPoint 2016自动化 - 访问嵌入式Excel图表对象时代码冻结

时间:2018-02-06 15:04:53

标签: c# excel visual-studio powerpoint

我们有一个用Visual Studio 2017编写的C#应用​​程序,它可以自动化PowerPoint应用程序中一系列嵌入式Excel图表的数据输入。最近,似乎突然出现,代码在与Excel对象交互时会在某些点冻结。特别是,似乎这一行是一个问题:Excel.Workbook xlWorkbook =(Excel.Workbook)shape.OLEFormat.Object;

它会坚持在那里并在那里呆上几个小时。它不会引发错误。

我尝试卸载并重新安装Office。没有帮助。我很难过。我只是在寻找解决问题的方法,看什么等等的任何建议。

编辑: 我想我应该提供更多信息。在这个过程中,我们打开了两个Powerpoint。第一个称为“主”,并包含幻灯片的“库”,其中包含不同配置的图表。该应用程序基于从db中检索的记录中的某些字段的值,将幻灯片从“master”复制到新的演示文稿中,然后连接到图表,从db中检索它们的数据,并填充它们。新的演示文稿中可以包含100到300张幻灯片,其中许多都是从“主”中完全相同的幻灯片中复制而来。换句话说,在创建新演示文稿期间,将填写同一幻灯片和图表的多个副本。所有这一切都在一次又一次地发生;应用程序可以在会话中创建数百个这样的新演示文稿。因此,有很多次连接到给定图表时没有问题。然后,突然间,20个演示文稿,以及100个和一些图表进入演示文稿,bam。其他时候,它几乎立即发生,在第一个演示文稿的前几张幻灯片中。而且,这几个月都运行良好。现在,突然之间,我们遇到了一个问题。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是因为嵌入式excel在制作文件的人创建它时出现了问题。您没有收到错误的原因是电源点在内部处理它。解决此问题的方法是将.pptx文件重命名为.zip文件,并打开zip文件夹中的resources文件夹。里面会有嵌入的实际excel表。如果您尝试直接针对该excel文件运行代码,您将能够看到正在发生的实际异常。一个较短的解决方案是删除从模板文件中嵌入的excel文件,然后放入一个新的测试文件,看看是否能解决您的问题。如果这确实解决了您的问题,那么下一步就是手动将数据输入(而不是复制和粘贴)到您嵌入的新工作表中。