使用getJSON返回Excel电子表格

时间:2013-03-30 16:38:44

标签: javascript jquery json excel asp.net-mvc-4

所以我有这个方法:

public Microsoft.Office.Interop.Excel.Worksheet createDoc()
{
    try
    {       
        app = new Microsoft.Office.Interop.Excel.Application();
        app.Visible = true;
        workbook = app.Workbooks.Add(1);
        worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1];
    }
    catch (Exception e)
    {
        Console.Write("Error");
    }
    finally
    {
    }
    return worksheet;
}

我需要能够返回此工作表并将其附加到我视图中的html iframe中。我在Visual Studio中使用MVC4。这是我到目前为止用来获取JSONResults的代码,但我从来没有处理过这个问题。

    $.getJSON("/exceldocumentmethod", function (results) {
    });

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您不应该使用JSON。您应该有一个控制器操作,它将Excel文件直接返回到具有正确的Content-Type和Content-Disposition标头的响应。然后将src的{​​{1}}指向此控制器操作。不要使用任何iframe方法,它们对您没有帮助。

例如,你可以拥有以下iframe:

$.getJSON

并且您的ExcelDoc操作可能如下所示:

<iframe src="@Url.Action("ExcelDoc", "Home")"></iframe>

对于Excel2007及更高版本的.xlsx文件,正确的内容类型为public ActionResult ExcelDoc() { var doc = Server.MapPath("~/App_Data/example.xls"); return File(doc, "application/vnd.ms-excel"); }

另外,我注意到您正在使用Excel Interop在服务器上动态生成文档。此librrary依赖于Excel安装在服务器上,而不是设计用于Web应用程序(服务器环境)。不要使用它。如果要在服务器上动态生成Excel文件,可以使用Open XML SDK。这是example on MSDN如何使用此SDK生成Excel电子表格的方法。