我正在寻找超过一周的解决方案。也许你有一个很好的解决方案来解决这个问题:
我想测量用Excel打开Excel文件所需的时间。我的第一个解决方案是用这行代码开始测量:
ProcessBuilder command = new ProcessBuilder("cmd", "/c",
<EXCEL_PATH>,
<FILE-LOCATION>);
command.start();
long start = System.currentTimeMillis();
我通过进程资源管理器检查RAM-Usage。如果excel完成加载,ram的使用仍然是相同的,我停止测量。如你所见,这是非常模糊的,不是一个好的解决方案。
作为第二个解决方案,我在JAVA中打开一个SocketServer并等到Excel在完成加载文件后调用Workbook_Open() - Method。在这个方法中,我发送一个套接字连接到java服务器(我给主机和端口作为参数excel)并测量这个时间。
这非常有效但是在我的公司中,如果它们没有存储在受信任的区域中,则不允许自动运行脚本。我不能改变政策,所以它不是一个解决方案。有谁知道如何在Excel中测量Excel文件的加载时间?它们不能用于跟踪Excel中的加载时间吗?
答案 0 :(得分:1)
您可以使用DDE重复尝试连接(启动对话)所需文件,并测量成功之前的时间。
请注意,它远非精确测量,应主要用于估算。
有关将DDE与Java和MS Excel一起使用的示例,请查看基于this project的this one。
详细信息:
在Excel程序内部完成加载之前,您无法通过DDE连接到Excel文件,这可以达到目的。
启动Excel后,您可以尝试通过DDE连接到该文件(重复或延迟100ms以避免CPU负载),直到成功为止,并计算成功后的时间。
伪代码:
ts = now();
d = DDE("file.xlsx");
while (d.error) {
d = DDE("file.xlsx");
}
load_time = now() - ts;
<小时/>
您可以在打开文件之前将当前时间写入一些新的临时本地文件,然后将Now
子例程中的当前时间(Workbook_Open
)写入同一临时文件,在第二行。
然后,您将能够跟踪文件,直到它有2行持续间隔,并计算时间戳之间的差异。 击>