使用Epplus读取Excel文件时STG_E_WRITEFAULT

问题描述 投票:2回答:1

在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或其他格式)
c# asp.net-core epplus
1个回答
1
投票

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

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

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

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

More detail here为什么会这样。

© www.soinside.com 2019 - 2024. All rights reserved.