現在、私のCドライブにExcelファイルを保存しています。 ...mvcでファイルをダウンロードする最も簡単な方法
私は、ファイルのダウンロードを返すためにリターンからの眺めを私の方法を変革したいと思っています...を
public ActionResult Export()
{
try
{
Excel.Application application = new Excel.Application();
Excel.Workbook workbook = application.Workbooks.Add(System.Reflection.Missing.Value);
Excel.Worksheet worksheet = workbook.ActiveSheet;
var people = db.People.ToList();
worksheet.Cells[1, 1] = "Last Name";
worksheet.Cells[1, 2] = "First Name";
int row = 2;
foreach (var person in people)
{
worksheet.Cells[row, 1] = person.PersonFName;
worksheet.Cells[row, 2] = person.PersonLName;
row++;
}
workbook.SaveAs("c:\\test\\worksheet.xls");
workbook.Close();
Marshal.ReleaseComObject(workbook);
application.Quit();
Marshal.FinalReleaseComObject(application);
ViewBag.Result = "Done";
}
catch(Exception ex)
{
ViewBag.Result = ex.Message;
}
return File("c:\\test\\workseet.xls", "application/vnd.ms-excel", "workseet.xls");
// return View("Success");
}
私はc:\\test\workseet.xls
に行くことができますし、それは私が今まで何それを行うことができますが存在します
私はそれがこのような単純なことだった考え出し:
return File("c:\\test\\workseet.xls", "application/vnd.ms-excel", "workseet.xls");
私はこの方法を実行し、ダウンロードするためのリンクをクリックしたときしかし、それは私に、このエラーが発生します。
The process cannot access the file 'c:\test\workseet.xls' because it is being used by another process.
まず、ブックを閉じる必要があります。ただし、ディスクに保存する代わりに、MemoryStreamに保存し、 'return File(myStream、..) 'を使用して回避することができます。 EPPlusを使用していますか? –
どのようにExcelファイルを生成していますか?どのライブラリを使用していますか? – mason
PS'xls'は、EPPlusのようなOpenXMLライブラリによって生成されたxlsxドキュメントの正しいタイプではありません。それはもはや使用されない2003年以前の古いフォーマットです。 –