You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量提取Excel数据时触发pywintypes.com_error(OLE 0x800a01a8)的解决

Excel批量提取数据时触发OLE错误0x800a01a8的解决过程

背景

用Python 3.11.4 + xlWings开发Excel数据提取程序,核心逻辑:

  • 提取Excel中的标准数据和用户自定义数据,存入预先创建的数据库
  • 待提取信息存在字典header_basis中:
    • 键为数据库表头
    • 标准数据的值是[提取值, 数据库列类型]数组
    • 用户自定义数据的数组额外包含搜索字符串和查找地址
  • 遍历所有目标文件,按列循环更新字典中要存入数据库的值

问题

批量处理文件时,某特定Excel文件触发错误:

pywintypes.com_error: (-2146827864, 'OLE error 0x800a01a8', None, None)

错误触发点在以下代码的最后一行:

# Retrieve properties
for header in headers:
    if header_basis[header][3] is None:
        header_basis[header][0] = "not found!"
    else:
        header_basis[header][0] = header_basis[header][3].offset(0,i).value

headers是用户自定义数据名称的字符串数组,同时作为数据库列名和字典键。

异常现象

  • 单独提取该报错文件无问题
  • 之前用独立数组存储值时也无错误,旧代码:
    val_arr[i] = fun_search_string(search_string, worksheet[PROPERTY_RANGE],0)[0]
    
    改为字典存储后才出现问题,新代码:
    header_basis[header][3] = (fun_search_string(search_string, worksheet[PROPERTY_RANGE],0)[0])
    

解决方案

怀疑是内存中残留的Excel对象引用导致的问题,在每次循环更新header_basis[header][3]前,先将其设为None,问题得以解决。

内容的提问来源于stack exchange,提问作者Sven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:35:09