在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文件,我不知道出了什么问题。
我检查过:
当使用文本编码定位.NetStandard
时,Epplus目前存在问题。要解决此问题,请将此引用添加到项目中。
<ItemGroup>
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.4.0" />
</ItemGroup>
然后,在应用程序的启动时调用一次 -
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
More detail here为什么会这样。