我有一个kendo网格,我可以将其数据导出为Excel文件,没有任何问题。在我的网格中,一些列可能会被隐藏,因为它们没有任何值。但是,我希望即使这些隐藏的列(我指它们的标题)也出现在导出的Excel文件中。
以下是显示在我的Kendo网格配置中的Excel配置代码的一部分。
excel: {
fileName: new Date().toString() + ".xlsx",
allPages: true,
},
非常感谢您的帮助。
我有一个kendo网格,我可以将其数据导出为Excel文件,没有任何问题。在我的网格中,一些列可能会被隐藏,因为它们没有任何值。但是,我希望即使这些隐藏的列(我指它们的标题)也出现在导出的Excel文件中。
以下是显示在我的Kendo网格配置中的Excel配置代码的一部分。
excel: {
fileName: new Date().toString() + ".xlsx",
allPages: true,
},
非常感谢您的帮助。
您可以在数组中定义 hidden: 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;
}
}
我想实现类似的功能,并使用@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
}
},
你可以添加一些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
事件。然后再次隐藏该列。
这里有一个示例供您测试。
hidden
属性是true
还是false
。我会进行一些研究,看看能否找出解决方法。示例有什么问题吗?网格中有3列,第3列被隐藏了。当单击“导出”按钮时,它会在Excel文档中显示隐藏的列。 - ShawnOrr