首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用getJSON返回Excel表格

用getJSON返回Excel表格
EN

Stack Overflow用户
提问于 2013-03-31 00:38:44
回答 1查看 940关注 0票数 1

所以我有这个方法:

代码语言:javascript
复制
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的代码,但我从来没有遇到过这种情况。

代码语言:javascript
复制
    $.getJSON("/exceldocumentmethod", function (results) {
    });

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-03-31 01:48:34

您不应该为此使用JSON。您应该有一个控制器操作,它将Excel文件直接返回到具有正确的Content-Type和Content-Disposition标头的响应。然后将iframesrc指向此控制器操作。不要使用任何$.getJSON方法,它们不会对您有所帮助。

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

代码语言:javascript
复制
<iframe src="@Url.Action("ExcelDoc", "Home")"></iframe>

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

代码语言:javascript
复制
public ActionResult ExcelDoc()
{
    var doc = Server.MapPath("~/App_Data/example.xls");
    return File(doc, "application/vnd.ms-excel");
}

对于Excel2007和更高版本的.xlsx文件,正确的内容类型是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15720905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档