使用getJSON返回Excel电子表格

Return Excel Spreadsheet using getJSON

本文关键字:电子表格 Excel 返回 getJSON 使用      更新时间:2023-09-26

所以我有了这个方法:

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文件直接返回给具有适当Content-Type和Content-Disposition头的响应。然后将iframesrc指向这个控制器动作。不要使用任何$.getJSON方法,它们不会帮助你。

例如,你可以有以下iframe:

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

和你的ExcelDoc动作可能看起来像这样:

public ActionResult ExcelDoc()
{
    var doc = Server.MapPath("~/App_Data/example.xls");
    return File(doc, "application/vnd.ms-excel");
}

,对于Excel2007及以上版本的。xlsx文件,正确的Content-Type为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

我还注意到你正在使用Excel互操作在服务器上动态生成文档。该库依赖于安装在服务器上的Excel,而不是设计用于web应用程序(服务器环境)。不要用它。如果要在服务器上动态生成Excel文件,可以使用Open XML SDK。以下是example on MSDN如何使用此SDK生成Excel电子表格。