首页 > 解决方案 > C# 中的 Excel 导入 - 缺少列错误

问题描述

我有一个 API,用于将 Excel 电子表格导入系统,尽管它不能处理丢失的列,但它可以正常工作,而且我不确定如何以及在什么时候可以做到这一点。

我先举个例子:我有一个 Excel 电子表格(.xlsx),其中有 4 列 A、B、C 和 D 都包含文本数据,我想要实现的是

  1. 当用户使用 A、B 和 C(D 已被删除)导入文件时,它会正确更新行并保持 D 列中的值不变

客户端我有一个如下所示的 API 调用:

this.service.PostFormData<HttpEvent<any>>("v1/ui/importExcel", formData)

其中 formData 是 FormData 类型(API FormData

在后端我做这样的事情:

HttpFileCollection files = HttpContext.Current.Request.Files;

foreach (string fileKey in files.AllKeys)
{
            HttpPostedFile file = files[fileKey];
            ISheet sheet = ImportHelper.GetImport(file);
}

public static ISheet GetImport(HttpPostedFile file)
{
    ISheet sheet;

    XSSFWorkbook workbook = new XSSFWorkbook(file.InputStream); <--- error
    sheet = workbook.GetSheetAt(0);

    return sheet;
}

一旦它尝试将 InputStream 转换为工作簿,就会触发错误(仅当从导入的电子表格中删除一列时)。

代码在 try & catch (Exception e) 中,尽管 e 返回为空白。

你们能帮忙解决一下吗?另外,让我知道是否有更好的异常类型可以用来获得体面的错误消息

标签: c#excel-import

解决方案


推荐阅读