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);
我在将 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);