Skip to content

ExcelParser ignores createWorkbookFromPath failure status #3

Description

@PengjiangXiao

问题描述

ExcelParser 的三个解析入口调用了 createWorkbookFromPath(path, out workbook),但没有检查该方法返回的 ExcelParserState

受影响的入口包括:

  • ParseFirstSheetFromPath
  • ParseSheetNameFromPath
  • ParseSheetIndexFromPath

我在当前 master 分支中确认了该问题:

  • 提交:a736f3b850bb454268093b8c1a409627649393e8
  • 文件:EasyDbc/Parsers/ExcelParser.cs

复现步骤

  1. 调用 ParseFirstSheetFromPath
  2. 传入一个不存在的 .xlsx 文件路径,或者传入无法打开的工作簿。
  3. createWorkbookFromPath 返回具体错误状态,并将 workbook 保持为 null
  4. 外层代码仍继续调用:
ISheet sheet = workbook.GetSheetAt(0);

实际结果

后续代码触发空引用异常,然后被外层 catch 转换为:

ExcelParserState.UnknownError

原本具体的 PathErrorFormatErrorReadPermissionError 因此丢失。

期望结果

三个解析入口都应检查并直接返回 createWorkbookFromPath 的状态,不应在打开失败后继续访问 workbook

建议修复方式

ExcelParserState workbookState =
    createWorkbookFromPath(path, out workbook);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions