在剑道网格excel导出显示隐藏的列

我有一个剑道网格,我可以导出其数据到Excel文件没有任何问题。 在我的网格中,可能会隐藏某些列,因为它们没有任何价值。 但是,我甚至希望这些隐藏的列(我的意思是他们的头)在我的出口Excel文件。

这里是一段代码,显示了Kendo网格configuration中的excelconfiguration。

excel: { fileName: new Date().toString() + ".xlsx", allPages: true, }, 

任何帮助,将不胜感激。

您可以在数组中定义隐藏的列:true,然后在导出之前简单地遍历columns数组和显示/隐藏列,如下所示:

  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; } }); 

基本上,当您点击“导出”button时,会捕获excelExport事件,并在触发保存文档的saveAsExcel()函数之前在网格中显示隐藏的列。 然后它再次隐藏列。

这里是一个你可以testing的例子 。