2017-12-17 22 views
1

ASP.NET MVC Core(.netcore2)アプリケーションでは、Excelファイルを読み込むために次の方法を使用しています。EpplusでExcelファイルを読み取っているときにSTG_E_WRITEFAULT

COMExceptionは:

[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はこの例外をスローしてディスクエラーは、書き込み動作中に発生しました。 (HRESULTからの例外:0x8003001D(STG_E_WRITEFAULT))

私は、Excelファイルをインポートするには、過去にこのようなメソッドを使用しました、と私は間違って何が起こっているのか分かりません。

私がチェックしました:参照の

  • バージョンをプロジェクトに
  • Excelファイルの妥当性
(私はそれが有効なのxlsxファイルではなく、古いXLSまたはその他の形式のプラスです)

答えて

1

Epplusは現在、.NetStandardをテキストエンコーディングでターゲティングする際に問題があります。これを解決するには、プロジェクトにこの参照を追加します。

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

次に、アプリケーションの起動時に一度これを呼び出す -

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 

More detail hereなぜこれが起こっている上。

関連する問題