使用 Epplus 读取 Excel 文件时出现 STG_E_WRITEFAULT 错误

3
在一个ASP.NET MVC Core (.netcore2)应用程序中,我正在使用以下方法来读取Excel文件。
[HttpPost]
public IActionResult Import (IFormFile importFile)
{
    using (var excel = new ExcelPackage(importFile.OpenReadStream())
    {
        var sheet = excel.Workbook.Worksheets.FirstOrDefault();
        if (sheet == null) return BadRequest("No worksheet.");

        var events = /* import logic */ 
        return Json(events);
    }
}

然而,epplus抛出了这个异常:
COMException: 在写操作期间发生磁盘错误。(HRESULT: 0x8003001D (STG_E_WRITEFAULT)的异常)
我以前使用过类似的方法来导入Excel文件,但不知道出了什么问题。
我已经检查了:
项目引用版本
Excel文件的有效性(我确定它是一个有效的xlsx文件,而不是旧的xls或其他格式)
1个回答

1

目前,当使用Epplus针对.NetStandard的文本编码时会出现问题。为了解决这个问题,请在你的项目中添加这个引用。

<ItemGroup>
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.4.0" />
</ItemGroup>

然后,在应用程序启动时调用此函数一次 -

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

这里有更详细的解释,说明为什么会发生这种情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接