我如何定期 post excel 数据到网络服务?
How do I regularly post excel data to a web service?
我有一个用户需求,我已经为此奋斗了一段时间但没有成功。我需要编写一个插件,它可以每隔几分钟读取一次大约 100 个公式驱动的单元格(特定电子表格的),并将其发送到 Web 服务。
我非常乐意使用 Excel-DNA 或 VSTO,但到目前为止我尝试过的所有操作都会导致用户界面瞬间挂起。如果数据是从活动电子表格中读取的(即使是从不同的线程),情况是否总是如此?
您需要 运行 辅助线程 post 将数据发送到 Web 服务以防止任何 UI 冻结。
从不同的线程读取 sheet 的效果可能比从 Excel 主线程读取的效果更差(比如在事件或其他情况下)。这是由于跨线程调用需要 COM 线程开关。最后,无论如何,所有 COM 调用都必须在主线程上完成它们的工作。
通过挂钩一些 Excel 事件,作为 Workbook.SheetChange
事件的开始,然后检查更改是否影响您监视的范围并更新内部数据,您可能会取得更大的成功结构与新数据。
然后您可以从后台线程定期更新后端(或仅当监视的单元格发生变化时)。
我有一个用户需求,我已经为此奋斗了一段时间但没有成功。我需要编写一个插件,它可以每隔几分钟读取一次大约 100 个公式驱动的单元格(特定电子表格的),并将其发送到 Web 服务。
我非常乐意使用 Excel-DNA 或 VSTO,但到目前为止我尝试过的所有操作都会导致用户界面瞬间挂起。如果数据是从活动电子表格中读取的(即使是从不同的线程),情况是否总是如此?
您需要 运行 辅助线程 post 将数据发送到 Web 服务以防止任何 UI 冻结。
从不同的线程读取 sheet 的效果可能比从 Excel 主线程读取的效果更差(比如在事件或其他情况下)。这是由于跨线程调用需要 COM 线程开关。最后,无论如何,所有 COM 调用都必须在主线程上完成它们的工作。
通过挂钩一些 Excel 事件,作为 Workbook.SheetChange
事件的开始,然后检查更改是否影响您监视的范围并更新内部数据,您可能会取得更大的成功结构与新数据。
然后您可以从后台线程定期更新后端(或仅当监视的单元格发生变化时)。