Skip to content

ExcelParser ignores createWorkbookFromPath failure status #4

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);

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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