如何使用pythonxlwings在excel工作簿中检测受保护的工作表?

2021-04-11 15:54:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本在运行,从我们的时间表MongoDB数据库更新excel电子表格。基本上,人们在我的webapp中输入他们的时间表,我通过Python脚本更新他们的excel电子表格。在

然而,当账单一个月后,我们会保护这张单子。有时,在受保护的工作表中,两周内的更新会交叉。在

我的问题是我当前的脚本擦除数据并在两周内重写它。但在受保护的工作表上,它将继续尝试写入,即使它受到保护,并且不会继续。它不会抛出错误,并一直尝试执行那行代码。在

我尝试实现超时,因为这行代码不会抛出错误,python也无法捕捉到它。但是,python不会经常检查while语句,因此它会看到当前时间最初小于超时值,但不会重新检查它,也不能,因为它被卡在代码行上。在

for j,user in enumerate(users):
    if user not in email_timesheet_dict:
        continue
    wb = xw.Book(email_timesheet_dict[user])
    app = xw.apps.active
    for sheet in sheets:
        time.sleep(1)                                 //What I've tried
        timeout = 30                                  //
        timeout_start = time.time()                   //
        print(time.time())                            //
        print(timeout_start)                          //
        print(timeout + timeout_start)                //
        while time.time() < timeout_start + timeout:  //What I've tried
            sht =wb.sheets[sheet]
            ...
            ...

这是它遇到的代码行:

^{pr2}$

我想知道是否有一种方法可以检查我正在编辑的工作表是否受保护,如果是,它将跳过它并转到下一个工作表。它是一个旧的excel文件(.xls),所以我需要它兼容。在