在Excel AddIn中安排工作簿在不同时间运行

本文关键字:同时间 运行 工作簿 Excel AddIn | 更新日期: 2023-09-27 18:01:50

我有一个用c#、Excel- dna、netooffice编写的Excel插件在每个工作簿上,用户可以运行一些进程从服务器获取数据(使用REST web服务)。现在,用户希望以不同的间隔或时间自动重新获取每个工作簿上的数据(刷新)。例如,在第一个工作簿上,用户希望每5分钟自动重新获取数据(刷新)另一方面,他们希望每小时刷新一次数据。第三,他们希望在每天下午1点刷新数据。在第四个,他们希望在每天下午2:20刷新数据,等等。

我的想法是对于用户想要自动刷新的每个工作簿,添加一个隐藏的工作表以记住以什么频率或什么时间刷新。

在插件中设置计时器,计时器将每分钟响起一次,检查哪些工作簿需要刷新并刷新。

我觉得这会对性能有很大的影响。请帮忙得到一个更好的解决方案。由于

在Excel AddIn中安排工作簿在不同时间运行

使用响应式扩展,以及Excel-DNA中对从响应式扩展IObservables中生成"实时"RTD公式的支持,可能会给你一种方法。你可以把刷新率作为函数的参数之一,然后使用下面的讨论来设置你的可观察对象:通过Excel- dna中的RxExcel支持,生成的IObservable将作为"live"工作表公式暴露在Excel中。可观察对象的每次更新都会更新调用该函数的相应单元格

应该使用线程来定期调用刷新方法

一些有用的链接可能会对您有所帮助:

c#中定期运行函数的更好方法

在函数完成任务后定期执行函数

如何使用线程或定时器从WPF客户端应用程序定期执行方法

您可以在插件的开始事件上调用一些方法。