Kendoui中的Grid组件是一个强大的报表生成组件,可以通过读取dataSource._data来快速生成一个便于浏览的报表,并提供一系列对报表的操作;

API:http://www.kendoui.io/kendo-ui/api/javascript/ui/grid.html

在制作报表时常会遇到的需求是报表的导出。将报表导出为一个Excel格式更便于浏览、维护及打印。同时Grid也提供了此功能

var grid = $("#grid").data("kendoGrid");

grid.saveAsExcel();

只需要这样两行简单的代码就能将grid中的数据导出

** 但是... **

有时候导出的数据和我们想象的不太一样!!!

导出失败,点击触发导出操作的按钮时无反应,此时打开浏览器控制台发现报错:

可以看出grid导出使用了jsZip库,我们需要将这个库导入;

提供一个在线可用的js库:

导出的表格名称默认为grid.xlsx,每次都需要修改好麻烦,我们需要的是当前打开的表格的名称xxx.xlsx

此时只需要我们给grid添加一个属性即可:

方法1:

excelExport: function(e) {

e.workbook.fileName = "xxx.xlsx";

}

方法2:

excel: {

fileName: "xxx.xlsx"

},

导出成功,看一下导出的Excel,艾玛!,表中的数据怎么和我想象的不太一样,有的grid中的列,我在对应的列中配置了template函数,修改了页面上显示的数据,即grid._data中的数据和显示在页面上的数据不一致,此时在Excel中表现的是grid._data中的值,而我的需求是要打印出页面上显示的数据(这符合大部分需求,因为保存在数据库中的值,出于对可维护性,降低数据库冗余等问题考虑,往往和需要显示的值是不同的),那么此时我们就要对grid._data进行处理了,通过一系列逻辑判断来改变修改里面的值,从而得到打印的效果

方法1:

//在每次调用saveAsGrid前会先执行这里面的函数

excelExport: function(e) {

console.log(e.data);//打印e.data发现这里面的数据就是最后在Excel中输出的值

/*

* 处理e.data即可

* 将对数据的处理逻辑放在这里!!!!!!!!!!!!!

*/

}

方法2:

//在调用saveAsExcel()前对grid._data进行处理

var grid = $("#grid").data("kendoGrid");

console.log(grid._data);//打印grid._data发现这里面的数据就是打印出来的数据;

/*

*因为grid中显示的数据也是grid._data,所以直接修改grid._data会导致显示的数据也发生变化

*所以需要先将grid复制一份

*/

var excel={};

$.extend(excel,grid);//此时excel就是grid的副本,拥有和grid一样的属性和函数,对grid的操作可以转移到excel上来进行

$.each(excel._data,function (i,item) {//逐行处理数据

//将对数据的处理逻辑放在这里!!!!!!!!!!!!!

})

excel.saveAsExcel();

做完以后,发现有需求变了,要求导出grid中所有的数据到Excel中,打开自己导出的Excel发现现在导出的是grid做完分页以后的数据,此时需要对grid的属性进行修改

excel:{

allPages:true//是否导出所有页中的数据

},

以上。

分割线:

一、关于导出grid中行是收缩到一起的问题:由于grid-columns-field在定义宽度的时候存在两种方式:

1.页面自适应形式:width定义为百分数

2.固定长度形式:width定义为数字

使用第一中方法导出Excel时,Excel不能获得具体的宽度,所以默认无宽度,造成的直接结果就是导出的列全部收缩在一起。使用第二种方法导出Excel时,在field中定义的width就是导出的Excel的列的宽度。使用第二种长度定义形式能解决列收缩的问题;

二、关于导出中grid需要导出部分列的解决办法:

1.经过测试grid.saveAsExcel()导出的Excel只包含当前grid显示的列,隐藏的列不会被导出。

2.测试grid的Event中的excelExport事件是发生在saveAsExcel之后

所以可以通过两步可以解决控制grid只导出部分列的问题:

在执行grid.saveAsExcel()执行的前一步,将那些不需要导出到Excel的列使用grid.hideColumn()隐藏起来

给grid定义excelExport事件,这个事件主要处理的是将那些刚刚被隐藏起来的列使用grid.showColumn()显示出来

浏览器支持情况

kendo官方文档并没有直接给出关于导出Excel功能对浏览器的支持情况,但是为了保险起见,请尽量使用IE10+以及Firefox4+以及其他现代浏览器

kendoui固定宽度_Kendoui之grid保存为Excel相关推荐

  1. kendoui固定宽度_KendoUi 学习笔记(二) Grid

    Kendo.ui.Grid Kendo Ui Grid控件,继承至Widget. 一.构造 allowCopyBoolen|Object  (默认:false) 当他设置true,用户就可以选中行点击 ...

  2. 【Python】实现将testlink上的用例指定格式保存至Excel,用于修改上传

    背景 前一篇博客记录的可以上传用例到testlink指定用例集的脚本,内部分享给了之后,同事希望能将testlink上原有的用例下载下来,用于下次修改上传,所有有了本文脚本. 具体实现 获取用例信息 ...

  3. phpexecl保存mysql_【PHP】将数据库表保存为Excel(PHPExcel)

    今天有一个朋友问了我一个PHP下载数据库表单并保存为Excel的功能问题.下面我就将代码贴出来,大家可以看下.<?php public function exptable($name){ ven ...

  4. python归档excel数据_python怎么把数据保存为excel

    在python中把数据保存为excel的方法:首先下载xlwt:然后使用[win R]快捷键打开cmd,切换目录到下载的文件地址并输入[python setup.py install]:再调用xlwt ...

  5. labview将产生数据存入数组 并保存成Excel

    很久没有用labview了,最近一个项目需要把仪器传来的数据保存下来,找了一个简单的方法.记录如下. 当数据是一个一个传进来的时候,可以把数据先存入一个数组,最后保存成excel文档. 实现方法如图. ...

  6. 利用Python搜索51CTO推荐博客并保存至Excel

    一.背景 近期在学习爬虫,利用Requests模块获取页面,BeautifulSoup来获取需要的内容,最后利用xlsxwriter模块讲内容保存至excel,在此记录一下,后续可举一反三,利用其抓取 ...

  7. python保存表格_python怎么把数据保存为excel

    在python中把数据保存为excel的方法:首先下载xlwt:然后使用[win+R]快捷键打开cmd,切换目录到下载的文件地址并输入[python setup.py install]:再调用xlwt ...

  8. Python提取Word文件中的目录标题保存为Excel文件

    from docx import Document from openpyxl import Workbook from openpyxl.styles import Alignment, Borde ...

  9. 数据挖掘基础之数据清洗:用python把“深圳二手房参考价”PDF保存为EXCEL

    坑DIE的住建局再一次不限富豪限刚需,公布了深圳市住宅小区二手住房成交参考价格,买房更难,首付更难凑... 数据挖掘基础之数据清理:用python把深圳二手房参考价PDF保存为EXCEL,以便其他分析 ...

最新文章

  1. mysql数据库支持的锁粒度包括_1. Mysql的并发(锁策略、锁粒度、事务)
  2. mysql新建备份在哪里_navicat for MySQL创建备份计划的详细流程
  3. linux 内核中一个全局变量引发的性能问题
  4. JavaScript 常用内置对象(字符串属性、Math对象、Array数组对象)
  5. HP Helion拉开商用大幕
  6. PythonEggs
  7. 提高效率--录制视频教程
  8. 基于M.2接口的SATA3协议和PCIE协议的SSD接口定义
  9. python api框架 hook_Windows API Hooking in Python
  10. android packagemanager源码,Android源码个个击破之PackageManager
  11. 计算机读不出光盘,光驱读不出光盘,小编教你电脑光盘不能被识别怎么解决
  12. 怎么用电脑录制游戏视频
  13. 用后台开发的逻辑理念学习VUE
  14. JavaWeb - 工作窃取算法 Work-Stealing
  15. el-amap的使用
  16. 高通滤波与低通滤波的简单理解
  17. 变速器--中英文翻译
  18. 基于Hi3516DV300的嵌入式入门演练(上)
  19. android应用数据清理
  20. 01-【浏览器】chrome浏览器收藏夹(书签)的导出与导入

热门文章

  1. css中大于符号是什么意思
  2. Unity3D单击物体弹出GUI窗口
  3. python三种基本数据类型有哪些_python中基本数据类型有哪些
  4. 如何利用IP地址确定地理位置
  5. SDK(3)讯飞语音
  6. vue项目使用bootstrap模态框叠加滚动条及蒙层解决方案
  7. uboot启动流程图以及boot启动linux流程图
  8. 新浪短连接免费接口thnkphp
  9. JAVA:实现HamiltonianCycle哈密尔顿图算法(附完整源码)
  10. 借“技术文章如何写作才能有较好的阅读体验”,说我们要认真的对待博客和技术.