我有一个用户要求,我一直在与之斗争一段时间没有成功。我需要编写一个加载项,每隔几分钟就可以读取大约100个公式驱动的单元格(特定电子表格),然后发送到Web服务。
我非常乐意使用Excel-DNA或VSTO,但到目前为止我尝试的所有内容都会导致用户界面暂时挂起。如果从活动电子表格中读取数据(即使是来自不同的线程),情况总会如此吗?
答案 0 :(得分:1)
从不同的主题中读取工作表可能比从Excel主线程中读取更糟糕的效果(例如在事件或某事中)。这是由于跨线程调用所需的COM线程切换。最后,所有COM调用都必须在主线程上完成它们的工作。
您可以通过挂钩某些Excel事件获得更多成功,作为Workbook.SheetChange
事件的开始,然后检查更改是否会影响您观察的范围并使用新数据更新内部数据结构。
然后,您可以定期(或仅在观察的单元格发生更改时)从后台线程更新后端。
答案 1 :(得分:0)
您需要运行辅助线程将数据发布到Web服务,以防止任何UI冻结。