如何获得excel更新Excel-DNA RTD的电子表格?

时间:2017-05-17 14:57:04

标签: c# excel excel-dna

我使用excel-DNA示例作为此测试的基础。

我希望excel每隔1秒在单元格B1中显示我的更新数据。

大约前5秒工作正常,然后我得到一个计时器,必须等待功能完成才能看到最后一个值。

如何强制在循环的每个循环中在电子表格上显示更新?

import os
import io

work_dir = "path/to/workdir"

for index in range(1, 701):
    name = "item{index}.txt".format(index=index)
    path = os.path.join(work_dir, name)
    with io.open(path, mode="r", encoding="utf-8") as fd:
        content = fd.read()

1 个答案:

答案 0 :(得分:0)

Excel支持一种名为RealTimeData(RTD)的工作表函数,这是您应该在场景中使用的。

按照" Samples"中的示例进行操作GitHub存储库。在特殊情况下,请查看使用Observable Timer的RtdClocks example

public static class RtdClock
{
    [ExcelFunction(Description = "Provides a ticking clock")]
    public static object dnaRtdClock_Rx()
    {
        string functionName = "dnaRtdClock_Rx";
        object paramInfo = null; // could be one parameter passed in directly, or an object array of all the parameters: new object[] {param1, param2}
        return ObservableRtdUtil.Observe(functionName, paramInfo, () => GetObservableClock() );
    }

    static IObservable<string> GetObservableClock()
    {
        return Observable.Timer(dueTime: TimeSpan.Zero, period: TimeSpan.FromSeconds(1))
                         .Select(_ => DateTime.Now.ToString("HH:mm:ss"));
    }
}