我使用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()
答案 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"));
}
}