我如何定期将Excel数据发布到Web服务?

我有一个用户的要求,我一直在争取一段时间没有成功。 我需要编写一个插件,可以每隔几分钟读取一次(特定电子表格的)100个公式驱动的单元格,并发送到Web服务。

我非常乐意使用Excel-DNA或VSTO,但是迄今为止我尝试过的一切都会导致用户界面暂时挂起。 如果从活动电子表格(即使是从不同的线程)读取数据,情况总是如此吗?

从不同的线程读取工作表可能会比从Excel主线程(例如事件或其他)读取更糟的效果。 这是由于跨线程调用所需的COM线程切换。 最后,无论如何,所有COM调用都必须在主线程上工作。

通过挂钩一些Excel事件,您可能会获得更多的成功,作为开始Workbook.SheetChange事件,然后检查更改是否影响您观察的范围并使用新数据更新内部数据结构。

然后,您可以从后台线程定期更新后端(或仅在被监视的单元格发生更改时)。

您需要运行辅助线程将数据发布到Web服务,以防止任何UI冻结。