Office 365 Excel COM接口性能是否受到点击运行的影响

问题描述

我有一个普通的C非托管64位程序,该程序使用后期绑定和OLE / COM接口来访问Excel,Outlook,Word,PowerPoint和许多其他与Automation / OLE兼容的应用程序。它可以(愉快地)在包括我公司的笔记本电脑在内的各种Windows平台上运行。

直到上周,笔记本电脑才装有Win 10和Office16。Excel的演示脚本始终在11秒内运行。公司政策要求对Office 365进行更新。因此,Excel现在为“版本2007(版本13029.20344单击运行)”。

现在11秒钟的脚本现在需要1分36秒。

星期五,一台全新的公司笔记本电脑(Lenovo T490s)也需要约1分36秒。

其他各种脚本(Outlook和Word)的性能在Office 16和Office 365之间未显示任何性能问题。

似乎在脚本命令中,例如:

Dim myExcel = CeateOBject ("Excel.application")

myExcel. visible = TRUE

' code to open an empty workbook

myWorkBook.cells(1,1).value = 1

myWorkBook.cells(1,1).value命令所花费的时间约为myExcel. visible = TRUE的两倍

以及诸如

之类的命令

myExcel.range(myExcel.cells(1,1).address,myExcel.cells( 1,9).address).font.bold = 1

大约是myExcel. visible = TRUE的6倍(约4秒)

性能下降似乎与执行脚本命令所需的COM接口调用次数有关。

myExcel. visible = TRUE一个电话。

myWorkBook.cells(1,1).value是双重通话

myExcel.range(myExcel.cells(1,9).address).font.bold = 1需要7个(我认为)通话!

将我的一些无知公开展示:

  1. Excel 365的COM部分是被获取(本地?还是远程?),用于命令,然后被丢弃。
  2. 是否已加载即点即用功能,然后(也许)未将其保存(公司安全策略)?

由于没有错误报告,并且脚本以预期的结果运行(运行时问题除外),所以我很难怪罪脚本或Excel对象模型。 (是的,我知道我们总是在怪别人之前,甚至还没有想到可能是我们在犯错误!)

但是为什么为什么要与Office 16相比性能如此出色,为什么只在Excel而不是其他Office应用程序上如此?

我觉得我公司的服务台范围太广了,任何帮助将不胜感激。

p.s。为什么不使用VBA?因为我的应用程序包含sqlite数据库引擎,所以它可以在脱机PC /笔记本电脑上处理大量数据,而无需在(或用户)计算机上安装XAMP,MAMP ...之类的东西。我使用OLE / COM接口在应用程序和Excel之间交换数据(比编写自己的xlsx / m / b文件处理程序更容易!)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...