Excel 在 MVC 中导出返回两个文件

Excel export returning two files in MVC

我正在尝试将一些数据导出到 excel 并通过浏览器下载文件。我有一个方法可以创建一个活动工作簿,该工作簿 returns 一个字节数组,如下所示:

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 文件。为什么是这样?

Excel Interop 是正确处理的噩梦。可能值得在您发布的方法之外检查您的代码,以了解您如何清理传入的 Excel 应用程序:

How do I properly clean up Excel interop objects?