Javascript 使用getJSON返回Excel电子表格

Javascript 使用getJSON返回Excel电子表格,javascript,jquery,json,excel,asp.net-mvc-4,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 = (Mic

所以我有这个方法:

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) {
    });

有什么建议吗?

您不应该为此使用JSON。您应该有一个控制器操作,该操作将Excel文件直接返回到具有适当内容类型和内容处置标题的响应。然后将
iframe
src
指向此控制器操作。不要使用任何
$.getJSON
方法,它们不会帮助您

例如,您可以使用以下iframe:

<iframe src="@Url.Action("ExcelDoc", "Home")"></iframe>
对于Excel2007和更高版本的.xlsx文件,正确的内容类型是
application/vnd.openxmlformats officedocument.spreadsheetml.sheet


我还注意到,您正在使用Excel Interop在服务器上动态生成文档。此库依赖于服务器上安装的Excel,而不是设计用于web应用程序(服务器环境)。不要用它。如果要在服务器上动态生成Excel文件,可以使用。下面是一个如何使用此SDK生成Excel电子表格的示例

getJSON希望返回JSON?您可能只想更改iframe的
src
,例如
@thaJeztah,您基本上是击中了它的头部。藤壶,有很大改进的问题。正如我之前所建议的,考虑返回CSV格式的字符串列表(JSON格式)……字面上不可能有更多的点。戴夫A我写上一个问题时有点匆忙,所以谢谢你的耐心和建议。现在的问题是,我似乎无法从该方法返回excel电子表格。我正在寻找类似public excelspreadsheet newSpreadsheet(param){return excelspreadsheet}的东西。问题是它不会显示在iframe中,它只是继续下载文件。我用的是谷歌浏览器,这可能很正常。我不确定Google Chrome是否支持内嵌显示Excel文档。您在Internet Explorer中尝试过吗?我正在努力找到一种简单的方法来生成excel文档并在我的网页中很好地显示它们。。。无需保存excel文档。你能帮助我吗?没有办法以跨浏览器的方式可靠地做到这一点。不支持Excel插件的浏览器不会显示它,而是会提示用户下载文件,对此您无能为力,除了使用Excel以外的其他格式。当然,浏览器能够内联显示。例如,如果您希望内联显示某些内容,我建议您使用HTML这种格式。XLS将在特定的桌面应用程序(如Microsoft Excel)中打开。那么有没有办法生成Excel电子表格并将其转换为html,然后在框架中显示?
public ActionResult ExcelDoc()
{
    var doc = Server.MapPath("~/App_Data/example.xls");
    return File(doc, "application/vnd.ms-excel");
}