在Kendo网格excel导出中显示隐藏列
我有一个剑道网格,我可以将其数据导出到excel文件中,没有任何问题。在我的网格中,某些列可能被隐藏,因为它们没有任何值。但是,我希望这些隐藏的列(我指的是它们的标题)都在我导出的excel文件中 下面是一段代码,显示了我的剑道网格配置中的excel配置在Kendo网格excel导出中显示隐藏列,excel,kendo-grid,export-to-excel,Excel,Kendo Grid,Export To Excel,我有一个剑道网格,我可以将其数据导出到excel文件中,没有任何问题。在我的网格中,某些列可能被隐藏,因为它们没有任何值。但是,我希望这些隐藏的列(我指的是它们的标题)都在我导出的excel文件中 下面是一段代码,显示了我的剑道网格配置中的excel配置 excel: { fileName: new Date().toString() + ".xlsx", allPages: true, }, 任何帮助都将不胜感激。您可以添加一些javascr
excel: {
fileName: new Date().toString() + ".xlsx",
allPages: true,
},
任何帮助都将不胜感激。您可以添加一些javascript来控制此操作
var exportFlag = true;
$("#gridName").data("kendoGrid").bind("excelExport", function (e) {
if (exportFlag) {
e.sender.showColumn("hiddenColumnName");
e.preventDefault();
exportFlag = false;
e.sender.saveAsExcel();
} else {
e.sender.hideColumn("hiddenColumnName");
exportFlag = true;
}
});
基本上,当您单击导出按钮并在启动保存文档的saveAsExcel()
函数之前显示网格中的隐藏列时,它会捕获excelExport
事件。然后它再次隐藏该列
这是一个可以使用的测试。您可以在定义隐藏:true的数组中有列,然后只需遍历列数组并在导出之前显示/隐藏列,如下所示:
function excelExport(e) {
if (!exportFlag) {
for(var i=0; i < columns.length; i++) {
if(columns[i].hidden)
e.sender.showColumn(i);
}
e.preventDefault();
exportFlag = true;
setTimeout(function () {
e.sender.saveAsExcel();
});
} else {
for(var i=0; i < columns.length; i++) {
if(columns[i].hidden)
e.sender.hideColumn(i);
}
exportFlag = false;
}
}
函数excelExport(e){
如果(!exportFlag){
对于(var i=0;i
我希望实现类似的效果,并使用@Ankur提供的答案进行了轻微修改,因为我需要在导出后再次隐藏列
代码如下:
excelExport(e) {
Spa.startLoading(); // loading overlay to hide the columns showing then hiding again
var columns = e.sender.columns;
var hiddenColumnNumbers = [];
if (!exportFlag) {
for (let i = 0; i < columns.length; i++) {
if (columns[i].hidden) {
e.sender.showColumn(i);
hiddenColumnNumbers.push(i);
}
}
e.preventDefault();
exportFlag = true;
setTimeout(() => {
e.sender.saveAsExcel();
for (let j = 0; j < columns.length; j++) {
if (hiddenColumnNumbers.indexOf(j) > -1) {
e.sender.hideColumn(j);
}
}
Spa.stopLoading(); // hide loading overlay
});
} else {
for (let k = 0; k < columns.length; k++) {
if (columns[k].hidden)
e.sender.hideColumn(k);
}
exportFlag = false;
Spa.stopLoading(); // hide loading overlay
}
},
excelExport(e){
Spa.startLoading();//加载覆盖以隐藏显示的列,然后再次隐藏
var columns=e.sender.columns;
var HiddenColumnNumber=[];
如果(!exportFlag){
for(设i=0;i{
e、 sender.saveAsExcel();
for(设j=0;j-1){
e、 发送方:hideColumn(j);
}
}
Spa.stopLoading();//隐藏加载覆盖
});
}否则{
for(设k=0;k
感谢您的回复。第一点是,我希望自动识别隐藏列(而不是手动输入它们的名称!)。另外,您提供的示例似乎不正确!好的,所以基本上我们需要一种方法来循环遍历每一列,看看hidden
属性是true
还是false
。我会做些调查看看能不能弄明白。这个例子有什么问题?网格中有3列,第3列隐藏。当您单击导出按钮时,它会显示excel文档中的隐藏列。该示例不起作用,因为伊朗不支持Telerik!(直接从其网站上引用)。我不得不使用代理来查看excel导出结果,现在它正在工作。然而,第一个问题仍然存在。我甚至想在我的excel文件中自动隐藏列。我真的不知道其他评论员的意思,这个例子对我来说非常有效,是最正确的答案。