2017-09-20 5 views
0

一部のデータをエクスポートして、ブラウザを使用してファイルをダウンロードしようとしています。私は、次のようにバイト配列を返すアクティブなブックを作成する方法があります:MVCで2つのファイルを返すExcelのエクスポート

byte[] doc = be.GetActiveWorkbook(excelApp); 

GetActiveWorkBookは次のようになります方法:

public byte[] GetActiveWorkbook(Application app) 
{ 
     string path = Path.GetTempFileName(); 

     try 
     { 
      app.ActiveWorkbook.SaveCopyAs(path); 
      return File.ReadAllBytes(path); 
     } 
     finally 
     { 
      if (File.Exists(path)) 
       File.Delete(path); 
     } 
} 

最後には、ファイルは次のように返されます。

var file = File(doc, "application/vnd.ms-excel"); 
file.FileDownloadName = filename + " " + id + ".xlsx"; 
return file; 

実際にExcelファイルがブラウザにダウンロードされていますが、Excelファイルを閉じていても、まだアクティブなプロセスがバックグラウンドにあるようです私のデスクトップではどうしてこれなの?

答えて

1

Excel Interopは適切に処分するための悪夢です。私はこの問題に関する記事がすでにあった知らなかった

How do I properly clean up Excel interop objects?

+0

:おそらく価値はあなたが渡されたExcelアプリケーションをクリーンアップしているかを確認するために投稿した方法の外にあなたのコードをチェックします。ありがとう、これは私の問題を解決! – jazy

関連する問題