在 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/