测量Excel的加载时间

我正在寻找超过一个星期的解决scheme。 也许你有一个很好的解决这个问题的方法:

我想测量我需要用Excel打开Excel文件的时间。 我的第一个解决scheme是用这行代码开始测量:

ProcessBuilder command = new ProcessBuilder("cmd", "/c", <EXCEL_PATH>, <FILE-LOCATION>); command.start(); long start = System.currentTimeMillis(); 

我通过进程pipe理器检查内存使用情况。 如果excel完成加载,RAM的使用仍然是相同的,我停止测量。 如你所见,这是非常模糊的,而不是一个好的解决scheme。

作为第二种解决scheme,我使用JAVA打开一个SocketServer,等待Excel完成加载文件后调用Workbook_Open() – Method。 在这个方法中,我发送一个套接字连接到java服务器(我给主机和端口作为参数来表示),并测量这个时间。

这是非常有效的,但在我的公司,它是不允许自动运行的脚本,如果他们不存储在信任的区域。 我不能改变这个政策,所以这不是一个解决scheme。 有没有人有一个想法如何测量在Excel中的Excel文件的加载时间? 这不可能是他们没有解决scheme来跟踪在Excel中的加载时间?

更新回答:

您可以使用DDE尝试连接(启动会话)到所需的文件重复,并测量通过的时间,直到您成功。

请注意,这将是一个非常精确的测量,应主要用于估计。

看看这个基于这个项目的项目 ,将DDE与Java和MS Excel一起使用的例子。

细节:

在Excel程序中加载完成之前,您无法通过DDE连接到Excel文件,这可以达到目的。
启动Excel后,您可以尝试通过DDE(重复或延迟100毫秒,以避免CPU负载)连接到文件,直到您成功,并计算成功后的时间。

伪代码:

 ts = now(); d = DDE("file.xlsx"); while (d.error) { d = DDE("file.xlsx"); } load_time = now() - ts; 

旧版本的答案:如果您已经使用工作簿的VBA,我认为有一个简单的解决scheme。

您可以在打开文件之前将当前时间写入某个新的临时本地文件,然后将Workbook_Open子例程中的当前时间( Now )写入第二行中的相同临时文件。

然后,您将能够跟踪文件,直到它有两行,并持续一段时间,然后计算时间戳之间的差异。