c# - 使用 Epplus 读取 Excel 文件时出现 STG_E_WRITEFAULT

标签 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: A disk error occurred during a write operation. (Exception from HRESULT: 0x8003001D (STG_E_WRITEFAULT))

我以前也用过这样的方法导入Excel文件,不知道哪里出了问题。

我检查过:

  • 项目的引用版本
  • Excel 文件有效性(我肯定这是一个有效的 xlsx 文件,而不是旧的 xls 或其他格式)

最佳答案

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

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

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

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

More detail here为什么会这样。

关于c# - 使用 Epplus 读取 Excel 文件时出现 STG_E_WRITEFAULT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47851858/

相关文章:

javascript - 在 ASP.NET MVC Core 中跨页面更改保留 JavaScript 设置

c# - 使用 EPPlus 从 csv 评估公式

c# - EPPlus:用户自定义函数计算

c# - 什么是NullReferenceException,如何解决?

c# - 简单的 ASP.Net 问题 <%# 和 <%= 不起作用!

c# - Linq distinct 无法正常工作

c# - 有没有什么方法可以像在 C# 中那样使用不变区域性在 Excel 中格式化日期单元格

c# - 使用 linq to txt 解析行

asp.net-core - 如何避免 Web API 中的 JSON 反序列化/序列化?

asp.net-core - .net 核心 (csproj) global.json 'projects' 等效