当向 Excel 提供来自 win32com 的数据时出现命名冲突 (_FilterDatabase)

2024-01-02

我想创建一个快速脚本,从标准化表单(word 文档/docx)中提取数据并将其传输到 Excel 工作表中,并附上一张进行一些计算的工作表。 一切都运行得很好,除了一个例外:

我希望能够过滤特定项目编号、用户首字母或其他数据点的结果,但是当我在 Excel 工作表上添加过滤器时,每当我从 Python 运行它时,我都会收到“命名冲突”错误消息,并且必须为“_FilterDatabase”选择一个新名称 - 当我这样做时,过滤器消失了。 如果我不这样做,脚本就会崩溃。

我这样打开工作表:

import win32com.client as win32
def openExcel():
    xl = win32.gencache.EnsureDispatch('Excel.Application')
    wb = xl.Workbooks.Open(path+"\\"+'Analysis.xlsx')
    ws = wb.Sheets(1)
    xl.Visible = True

    return ws 

然后我将数据中包含的数据点传递到Excel

def print2Excel(data, ws):
    const = win32.constants
    ws.Range("A2:H2").Insert(const.xlShiftDown, const.xlFormatFromRightOrBelow)
    ws.Cells(2,1).Value = data["datapoint"]
    ...

即使我事后删除过滤器,这个问题仍然存在。一旦 Excel 工作表被过滤一次,错误就会发生,直到时间结束。到目前为止唯一的出路是git 重置/签出Excel。


我看不到您应用过滤器的位置,但在应用过滤器之前,您是否尝试过将 AutoFilterMode 设置为 False,然后添加过滤器?例如

    sh_data.Rows(1).AutoFilter(Field=1, Criteria1='B')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当向 Excel 提供来自 win32com 的数据时出现命名冲突 (_FilterDatabase) 的相关文章

随机推荐