【问题标题】:Return Excel Spreadsheet using getJSON使用 getJSON 返回 Excel 电子表格
【发布时间】:2013-03-30 16:38:43
【问题描述】:

所以我有这个方法:

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

有什么建议吗?

【问题讨论】:

  • getJSON 期望返回 JSON?您可能只想更改 iframe 的 src,例如<iframe src='/myexcelaction?param1=foo&param2=bar' />
  • @thaJeztah,你基本上击中了它的头。藤壶,大大改进的问题。正如我之前建议的,考虑以 csv 格式返回字符串列表(json 格式)...
  • 从字面上看,再合适不过了。 Dave A 我确实写了上一个问题,有点疲惫,所以感谢您的耐心和建议。现在的问题是我似乎无法从该方法返回 excel 电子表格。我正在寻找类似 public excelspreadsheet newSpreadsheet(param) { return excelspreadsheet }

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


【解决方案1】:

您不应该为此使用 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 Interop 在服务器上动态生成文档。此库依赖于安装在服务器上的 Excel,并非设计用于 Web 应用程序(服务器环境)。不要使用它。如果要在服务器上动态生成 Excel 文件,可以使用 Open XML SDK。这是example on MSDN 如何使用此 SDK 生成 Excel 电子表格。

【讨论】:

  • 这个问题是它没有显示在 iframe 中,它只是继续下载文件。我正在使用谷歌浏览器。
  • 这可能是正常的。我不确定 Google Chrome 是否支持内联显示 Excel 文档。您在 Internet Explorer 中尝试过吗?
  • 我只是在努力寻找一种简单的方法来生成 excel 文档并将它们很好地显示在我的网页中......而无需保存 excel 文档。你能帮帮我吗?
  • 没有办法以跨浏览器的方式可靠地做到这一点。不支持 Excel 插件的浏览器根本不会显示它,但会提示用户下载文件,您对此无能为力,除了使用与 Excel 不同的格式,当然浏览器能够内联显示。例如,如果您想内联显示一些内容,我建议您使用 HTML 格式。 XLS 旨在在特定的桌面应用程序中打开,例如 Microsoft Excel。
  • 那么有没有办法生成一个excel电子表格并将其转换为html,然后在一个框架中显示?
猜你喜欢
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多