微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。