导出到Excel代码不会触发下载

用户2011507

我尝试使用以下ASP.NET MVC 4代码导出表(由jTable jquery插件生成,但它只是一个表,因此无关紧要)。它不会触发下载文件对话框。

另一个问题是虽然HTML编码表是由.ajax()POST发送的,但是当我尝试使用处理值时会触发错误string inp = Request["input"];[ValidateInput(false)]在[HttpPost]之前和之后都使用了声明,以解决“从客户端检测到潜在危险的request.form值”错误(因为我正在发送HTML表),但是该声明并不能防止出现“引发潜在危险的request.form值...”异常-

我的.cshtml页面中的代码

 $("#exportToExcel").on("click", function (e) {
                $.ajax({
                    url: '/Reports/Export',
                    cache: false,
                    dataType: "html",
                    type: 'POST',
                    data: { input: $(".jtable").html() },
                    success: function (data) {

                    },
                    complete: function () {

                    }
                });
            })

报表控制器中的代码:

[ValidateInput(false)]
[HttpPost]
public void Export()
{
    //string inp = Request["input"];
    string body = "<table><tr><td>2</td><td>3</td></tr><table>";
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=data.xls");
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    //Response.ContentType = "application/vnd.ms-excel";
    Response.ContentType = "application/force-download";

    Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
    Response.Write("<head>");
    Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
    Response.Write("<!--[if gte mso 9]><xml>");
    Response.Write("<x:ExcelWorkbook>");
    Response.Write("<x:ExcelWorksheets>");
    Response.Write("<x:ExcelWorksheet>");
    Response.Write("<x:Name>Report Data</x:Name>");
    Response.Write("<x:WorksheetOptions>");
    Response.Write("<x:Print>");
    Response.Write("<x:ValidPrinterInfo/>");
    Response.Write("</x:Print>");
    Response.Write("</x:WorksheetOptions>");
    Response.Write("</x:ExcelWorksheet>");
    Response.Write("</x:ExcelWorksheets>");
    Response.Write("</x:ExcelWorkbook>");
    Response.Write("</xml>");
    Response.Write("<![endif]--> ");
    Response.Write("<![endif]--> ");
    Response.Write("</head>");
    Response.Write("<body>");
    Response.Write(body);
    //Response.Write(inp);
    Response.Write("</body>");
    Response.Write("</html>");
    Response.End();

}
沙基卜

无法通过ajax调用实现文件下载响应,只有很少的方法可以实现此目的。以下是其中之一,

$("#exportToExcel").on("click", function (e) {
    var form = $('form');
    var input = $('<input type="hidden" name="input" value="" />');
    input.val($(".jtable").html());
    form.append(input);
    form.attr('action', '/Reports/Export');
    form.attr('method', 'POST');
    form.submit();
})

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么触发下载计数?

来自分类Dev

ClosedXML:导出到Excel不会下载文件MVC 4

来自分类Dev

爬网不会导出到Excel

来自分类Dev

将HTML表格导出到Excel,将其下载表格内容导出到Excel

来自分类Dev

将Gridview导出到Excel时阻止下载

来自分类Dev

将数据从R导出到Excel:公式不会重新计算

来自分类Dev

导出到Excel时,SSRS不会扩展行高

来自分类Dev

从gridview导出到excel不会显示长数字

来自分类Dev

使用颜色代码从Gridview导出到Excel

来自分类Dev

修改代码以将HTML表导出到Excel

来自分类Dev

SQL Server 在代码中导出到 Excel 和 MS Access

来自分类Dev

导出到excel或csv

来自分类Dev

导出到Excel限制

来自分类Dev

KendoUI导出到excel

来自分类Dev

无法导出到excel

来自分类Dev

内容处置:附件未触发下载对话框

来自分类Dev

如何确保使用快速sendFile触发下载提示?

来自分类Dev

在 Javascript 中创建文件并触发下载

来自分类Dev

将数据从数据集导出到Excel后如何下载Excel文件?

来自分类Dev

Rails-使用axlsx gem将记录导出到可下载的excel文件(Keep MVC)

来自分类Dev

防止剑道数据网格导出到 Excel 下载对话框

来自分类Dev

熊猫DataFrameGroupBy导出到Excel

来自分类Dev

导出到Excel .xlsx文件

来自分类Dev

将数据导出到Excel

来自分类Dev

将JSON导出到Excel

来自分类Dev

Telerik:Radgridview导出到excel

来自分类Dev

排序导出到excel的字典?

来自分类Dev

女士访问导出到Excel

来自分类Dev

从Access导出到Excel的限制