xlwings python不断返回UDF中的更新数据

时间:2017-08-14 10:44:34

标签: python xlwings

我有一个类更新实时值:

class LiveUpdate():

    def __init__(self):

        self.x=0

        self.t1 = threading.Thread(target=self._refresh_value)
        self.t1.start()

    def _refresh_value(self):

        while True:
            self.x=self.x+1


updater=LiveUpdate()

@xw.func
def return_live_x():
    return updater.x

当我将return_live_x称为UDF时,如何让它在excel中连续返回1,2,3,4等?

1 个答案:

答案 0 :(得分:0)

  

问题:...更多关于让UDF自动刷新excel中的值

如果Excel决定重新计算或按下按键以手动执行此操作,则会调用UDF。

不知道是否可以使用xlwings在后​​台启动并运行Python脚本。

我可以想象下面的未经测试的代码

  

注意:此代码可能导致Excel失效。

class LiveUpdate():
    def __init__(self, wb):
        self.wb = wb
        ...

    def _refresh_value(self):
        while True:
            self.x += 1
            self.wb.sheets[0].range('A1').value = self.x
            time.sleep(1)

@xw.func
def start_LiveUpdate():
    LiveUpdate(xw.Book.caller())
    return 'started'