gpt4 book ai didi

c# - PowerPoint 互操作程序集缓慢问题

转载 作者:行者123 更新时间:2023-11-30 22:58:27 24 4
gpt4 key购买 nike

我正在使用 MS Office 互操作程序集构建一个 Powerpoint 插件,它可以动态插入幻灯片和图表。但在插入过程中,从插入幻灯片到插入图表最多需要 20 秒才能完成。

在进行大量日志记录后,我注意到我们的应用程序在几行代码中卡住了 20 多秒。以下是这些行:

powerpointChartObj.SetSourceData(Source:=String.Format("=Sheet1!A1:B{0}", 5))

powerpointSlideObject.Shapes("some shape name")

在幻灯片插入过程中,我们不断地使用 PowerPoint 图表和幻灯片对象,但有时它会在上述其中一条线上被阻塞。它在哪条线上被阻塞是随机的。

以下是我们使用的办公图书馆:

  1. Microsoft Office 16.0 对象库
  2. Microsoft Excel 16.0 对象库
  3. Microsoft Graph 16.0 对象库
  4. Microsoft PowerPoint 16.0 对象库
  5. Microsoft Word 16.0 对象库
  6. Microsoft.Office.Tools.dll
  7. Microsoft.Office.Tools.Common.dll
  8. Microsoft.Office.Tools.Common.v4.0.Utilities.dll
  9. Microsoft.Office.Tools.v4.0.Framework.dll
  10. Microsoft.Vbe.Interop

测试环境

办公室 2016

Windows 8.1 + Windows 10

16 GB 内存,英特尔酷睿 i5-4570 CPU

我们将不胜感激任何解决方案或解决方法。

附言。还尝试使用 Office 15.0 对象库

已更新

我试过 EnableEvents 并将其永远设置为 false。它提高了图表插入/更新场景期间的性能,但如果我们不断调用 PowerPoint COM 组件(例如形状、幻灯片等来操作 PowerPoint 事物),PowerPoint 会再次卡住大约 20 秒。不确定 PowerPoint 互操作中是否有类似于 EnableEvents 的东西可用。

最佳答案

我还没有发表评论的权利,如果这不是完美的答案,请多多包涵。

我的办公产品自动化经验是通过 VBS 实现的,但它们都使用 COM 对象,所以它的工作原理可能相同。我主要使用 Excel,所以 powerpoint 不是我的强项。

我的建议是在添加数据时暂时禁用屏幕更新/事件。

这是一个例子(使用 VBS):

Application.Calculation = xlCalculationManual 'Excel specific
Application.ScreenUpdating = False 'All office products
Application.DisplayStatusBar = False 'All office products
Application.EnableEvents = False 'All office products
'your code running here
Application.EnableEvents = True 'All office products
Application. DisplayStatusBar = True 'All office products
Application.ScreenUpdating = True 'All office products
Application.Calculation = xlCalculationAutomatic 'Excel specific

还要避免在数据中使用大量“选择”调用,因为它会减慢速度。

在我的 VBS 脚本中,通过使用这种技术,我或多或少没有遇到任何滞后或问题。我还建议您在添加大量数据时创建自己的“请稍候”弹出屏幕。对于某些调用确实需要时间,即使您在 Powerpoint/Excel 中手动调用也是如此。

祝你好运,办公自动化可能很麻烦 :)

关于c# - PowerPoint 互操作程序集缓慢问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53004405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com