Yii2-GridView添加导出功能

首先我们需要用Composer安装一个导出组件:kartik-v/yii2-export

这个组件依赖一个PDF导出组件kartik-v/yii2-mpdf,100多M,所以安装可能很慢,需要耐心等候
不过新版本好像默认不依赖此PDF组件了

安装完毕后,打开config/web.php,给$config变量添加一个成员:

打开相应的视图文件,例如views/user/index.php,修改默认GridView的命名空间,并引用导出菜单类

用一个变量来记录需要显示及导出的字段信息,例如

因为字段信息需要分别在导出菜单和表格视图中用到,所以用一个变量记录起来会比较方便调用、修改等
然后创建导出菜单。这里直接贴出我的代码,顺便介绍几个常用的可选参数

我来解释一下这些参数的含义吧:
encoding:默认为UTF-8。为何我这里要设为GB2312呢?因为导出功能很多时候都需要导出excel表格,而excel表格多半使用office而不是WPS打开,而中文office不支持UTF8的表格,打开会乱码,所以只能用GB2312。而WPS在UTF8表格上就支持得挺好,表扬一个
dropdownOptions:导出按钮选项。可以设置导出文案之类
exportConfig:导出选项。我这里禁用了文本文档、PDF、Excel2007+的导出方式。禁文本文档是因为不美观,而且没啥意义;禁PDF是因为上面提到的PDF导出依赖组件太大(100+MB)且从项目需求上不需要导出pdf,所以我把这组件remove了;禁Excel2007+是因为在线上报错,可能是某个PHP扩展没开,没去深究,反正Excel95格式够用了
columnSelectorOptions:相信大家都能理解
filename:即导出文件名
selectedColumns:默认导出的字段。不添加此参数时默认选中全部,也会选中第一列自增序列#和最后一列操作列(就是默认有“查看修改删除”三大功能的那一列)。导出时如果不需要这些的话,就得添加此参数,并填写需要导出的字段的索引值,从0开始(0即#列)
hiddenColumns:在导出菜单中隐藏的字段。隐藏后用户将无法手动选择导出#栏及操作栏

接下来创建表格视图,直接贴代码

其中的export参数需要讲讲。上面讲到有个很大的PDF导出组件kartik-v/yii2-mpdf,我嫌它没用(项目需求只是需要导出excel),就把它remove了,但紧接着导出组件就报错了。翻了好久官方文档都没找到解决方案,好气噢。结果我一顿瞎摸索,发现填写了这个参数并赋值false即可解决remove掉pdf组件后导出组件报错的问题,并且不影响其他格式的正常导出

至此,导出组件应该能够正常工作了。Enjoy it!

0 条评论

昵称

沙发空缺中,还不快抢~