Kendo UI 网格导出到 Excel / PDF 在 IE9 上不工作

Kendo UI Grid Export to Excel / PDF not working on IE9


我在将 Kendo UI 网格导出到 excel 和 IE9 中的 pdf 时遇到问题。
使用 Chrome 一切正常,但在 IE9 中没有任何反应。
这是我的网格。有什么不对或遗漏的吗?

        $("#gridDetalhes").kendoGrid({

            dataSource: {
                data: myJsonList
            },


            excel: {
                allPages: true,
                fileName: "SGD_Detalhes.xlsx"
            },


            toolbar: ["excel", "pdf"],


            columns: [


                   { field: "DataInicio", width: "135px", title: "Início", type: "date", template: '#= kendo.toString(DataInicio,"dd/MM/yyyy HH:mm:ss") #' },
                   { field: "DataFim", width: "135px", title: "Fim", type: "date", template: '#= kendo.toString(DataFim,"dd/MM/yyyy HH:mm:ss") #' },
                   { field: "Duracao", width: "80px", title: "Duração", type: "string" },
                   { field: "Gerador", width: "40px", title: "A/M", type: "string" },
                   { field: "Identificador", width: "120px", title: "Identificador", type: "string" },

            ]


        });

在您的标记中指定 Kendo UI 推荐的 DOCTYPES,例如 XHTML 1.1、XHTML 1.0 Strict 或 HTML4 Strict

此外,通过 META 标记或 HTTP 使用 IE 的边缘模式 header

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

导出功能不支持Safari、IE9及以下版本。 对于不支持的浏览器,您需要提供 proxyUrl 来指定服务器代理 URL.

查看 Server Proxy Implementations 示例(对于 ASP.NET WebForms/API/MVC、PHP、Java/Spring MVC)

例如 - ASP.NET MVC 的服务器控制器操作:

public class HomeController
{
    [HttpPost]
    public ActionResult KendoSave(string contentType, string base64, string fileName)
    {
        var fileContents = Convert.FromBase64String(base64);

        return File(fileContents, contentType, fileName);
    }
}

然后您需要提供指向此操作的 proxyUrl 参数:

excel: {
                allPages: true,
                fileName: "SGD_Detalhes.xlsx"
                proxyURL: "/Home/KendoSave",
       }

希望对您有所帮助。

我一直在努力解决同样的问题并实现服务器端,所以我最终得到了最简单的 nodejs 版本。这是代码:

var fs = require('fs');
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.post('/save', function(req,res){
  var fContents = req.body.base64;
  var fName = req.body.fileName;
  var buffer = new Buffer(fContents, 'base64');
  res.setHeader('Content-disposition', 'attachment; filename=' + fName);
  res.send(buffer);
})
app.listen(80);