【问题标题】:Show hidden columns in Kendo grid excel export在 Kendo 网格 excel 导出中显示隐藏的列
【发布时间】:2016-07-17 10:43:27
【问题描述】:

我有一个剑道网格,我可以毫无问题地将其数据导出到 excel 文件中。在我的网格中,某些列可能会被隐藏,因为它们没有任何价值。但是,我什至希望这些隐藏的列(我的意思是它们的标题)出现在我导出的 excel 文件中。

这是一段代码,显示了我的剑道网格配置中的 excel 配置。

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

任何帮助将不胜感激。

【问题讨论】:

    标签: excel kendo-grid export-to-excel


    【解决方案1】:

    您可以在定义 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;
                    }
          }
    

    【讨论】:

      【解决方案2】:

      您可以添加一些 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;
          }
      });
      

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

      这是一个Example,您可以使用它进行测试。

      【讨论】:

      • 感谢您的回复。第一点是我希望自动识别隐藏的列(而不是手动输入它们的名称!)。附言您提供的示例似乎不正确!
      • 好的,所以基本上我们需要一种方法来遍历每一列,看看hidden 属性是true 还是false。我会做一些研究,看看我是否能解决这个问题。这个例子有什么问题?网格中有 3 列,第 3 列被隐藏。当您单击“导出”按钮时,它会显示 excel 文档中的隐藏列。
      • 该示例不起作用,因为伊朗不支持 Telerik! (任何直接来自其网站的引用)。我必须使用代理才能查看 excel 导出结果,现在它正在工作。但是,第一个问题仍然存在。我什至希望隐藏列自动出现在我的 excel 文件中。
      • 我真的不知道其他评论者的意思,这个例子对我来说非常有效,是最正确的答案。
      【解决方案3】:

      我希望实现类似的目标,并使用@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
                      }
                  },
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-16
        • 2014-08-05
        • 1970-01-01
        相关资源
        最近更新 更多