gpt4 book ai didi

java - 测量Excel的加载时间

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:55 26 4
gpt4 key购买 nike

我花了一个多星期的时间寻找解决方案。也许你对这个问题有很好的解决方案:

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

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

然后我通过进程浏览器检查 RAM 使用情况。如果 excel 完成加载,ram 使用情况仍然相同,我将停止测量。如您所见,这非常模糊,不是一个好的解决方案。

作为第二种解决方案,我在 JAVA 中打开一个 SocketServer 并等待 Excel 在完成文件加载后调用 Workbook_Open()- 方法。在这个方法中,我向 java 服务器发送一个套接字连接(我将主机和端口作为参数提供给 excel)并测量这次。

这非常有效,但在我的公司,如果脚本未存储在受信任的区域中,则不允许自动运行脚本。我无法更改政策,因此这不是解决方案。有谁知道如何测量 Excel 中 Excel 文件的加载时间?难道他们没有解决方案来跟踪 Excel 中的加载时间吗?

最佳答案

更新的答案:

您可以使用 DDE 反复尝试连接(发起对话)到所需的文件,并测量成功所需的时间。

请注意,这远非精确测量,主要用于估算。

看看this project这是基于 this one , 作为将 DDE 与 Java 和 MS Excel 一起使用的示例。

详细信息:

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

伪代码:

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


Old version of answer: 如果您已经在使用工作簿的 VBA,我认为有一个简单的解决方案。

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

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

关于java - 测量Excel的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652387/

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