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

使用win32com.client连接UniSim与Python时空单元格报错问题

问题描述

通过win32com.client在Jupyter Notebook中连接UniSim Design时,访问值为<empty>的单元格(对应代码sheet.Cell(0,13).CellValue,即UniSim中的A14单元格)触发报错,报错信息如下:

C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py in __getattr__(self, attr)
    626             )
    627             try:
--> 628                 ret = self._oleobj_.Invoke(retEntry.dispid, 0, invoke_type, 1)
    629             except pythoncom.com_error as details:
    630                 if details.hresult in ERRORS_BAD_CONTEXT:

com_error: (-2147352567, 'Exceção.', (0, None, None, None, 0, -2147467259), None)

连接UniSim的代码如下:

def abresim():
    parent = os.path.dirname(os.getcwd()) 
    unisim = win32.Dispatch('UniSimDesign.Application')
    unisim.visible=True                                                                                  
    simulation = unisim.SimulationCases.Open(os.path.join(os.path.dirname(os.getcwd()), 'directory with the UniSim file'))
    simulation.Activate()
    sheet = simulation.Flowsheet.Operations['Entradas'] # 我的UniSim文件中的表格
    return unisim,simulation,sheet

需求:将UniSim中的空值转为0,实现无报错导入数据。

解决方案

可以通过捕获COM异常的方式处理空单元格场景,当访问CellValue触发空值对应的错误时,自动返回0替代。

方式1:封装工具函数(推荐)

编写一个复用性高的函数,安全获取单元格值:

import pythoncom

def get_unisim_cell_value(sheet, row, col):
    try:
        return sheet.Cell(row, col).CellValue
    except pythoncom.com_error as e:
        # 匹配空单元格对应的底层错误码
        if e.excepinfo[5] == -2147467259:
            return 0
        # 其他异常正常抛出,不掩盖问题
        raise

使用示例:

# 替换原来的sheet.Cell(0,13).CellValue
cell_value = get_unisim_cell_value(sheet, 0, 13)

方式2:直接添加异常处理

如果只需要处理单个单元格,可以直接在访问代码中加入try-except:

try:
    cell_value = sheet.Cell(0,13).CellValue
except pythoncom.com_error as e:
    if e.excepinfo[5] == -2147467259:
        cell_value = 0
    else:
        raise

说明

  • UniSim中空单元格通过COM接口访问时会触发特定错误,这里通过e.excepinfo[5]获取底层错误码-2147467259来识别该场景。
  • 保留抛出其他异常的逻辑,避免忽略诸如连接中断、单元格不存在等其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:09:54