2017-12-28 32 views
0

ストリームが閉じていると表示されます。私は空の.xlsファイルをどのように送り返すかを理解しようとしています。Web Api/NPOIを使用して空白のExcel文書をユーザーに送信しようとしています

ObjectDisposedException:クローズドストリームにアクセスできません。 System.IO .__ Error.StreamIsClosed()

[Produces("application/json")] 
[Route("api/Report")] 
public class ReportController : Controller 
{ 
    [HttpGet] 
    public ActionResult Get() 
    { 
     IWorkbook workbook = new XSSFWorkbook(); 
     ISheet sheet1 = workbook.CreateSheet("Sheet1"); 

     using (var exportData = new MemoryStream()) 
     { 
      workbook.Write(exportData); 
      string saveAsFileName = string.Format("Export-{0:d}.xlsx", DateTime.Now).Replace("/", "-"); 
      byte[] bytes = exportData.ToArray(); 
      return File(exportData, "application/vnd.ms-excel", saveAsFileName); 
     } 
    } 
} 

答えて

0

あなたはMemoryStreamからバイト配列を作成しているが、あなたはFileメソッドに送信されていません。したがって、Fileメソッドはストリームにアクセスしようとしていますが、そのポイントですでに閉じています。

変更この行:これに

return File(exportData, "application/vnd.ms-excel", saveAsFileName); 

return File(bytes, "application/vnd.ms-excel", saveAsFileName); 
関連する問題