使用Epplus读取Excel文件时STG_E_WRITEFAULT

时间:2017-12-17 03:02:49

标签: c# asp.net-core epplus

在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 个答案:

答案 0 :(得分:1)

当使用文字编码定位.NetStandard时,Epplus目前存在问题。要解决此问题,请将此引用添加到项目中。

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

然后,在应用程序的启动时调用一次 -

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

More detail here了解为什么会发生这种情况。