通过主流框架spring或者springmvc或者spring-boot等,和前端 easyui或者bootstrap-table框架实现表格动态下载的Excel逻辑思路
相信很多和鄙人一样在码转过程中都会在项目中遇到一些下载之内的功能,但对于一些刚踏入不该踏入程序猿族行业的小小菜鸟们,实现这样的功能估计有点小棘手,下面小编就针对现实项目中经常用到的主流前端框架easyui或者bootStrap-table来实现不同列表动态下载思路,仅供参考(仅描述下bootstrap-table):
通过获取所有列属性,传递到后台创建临时文件的方式下载生成的Excel文件,可能在这里有许多疑问的朋友会提问,bootstrap-table的列表头都不固定,就算我前端获取到了后台怎么去处理这些列数据?其实能获取到所有的列属性,处理这些属性就很简单了!首先咱们必须明确一点,对于前端获取到的每一列里面的所有属性,我可以把列看成是一个Object对象,不管他是什么列我都给他定义成Object对象,但是必须清楚所有看成Object对象的列里面所有的属性都是固定的,例如
所以我们在后台定义接收这些列的时候只需要定义成一个Object的List集合就可以接收所有的这些列数据。到后台接收到这些列的时候我该怎么处理呢,比如说我改怎么获取列里面的属性呢,比如title属性用来生成Excel的表头、width设置表头的宽度等等。通过上面截图的可以看出,每一{}里面的属性和对应的属性值,我们可以把它看成相当于我们java中经常用到的map集合里面的键值对(key-value),所以我们在获取到的这个list集合后,所需那个属性我们在遍历集合的时候可以将Object对象强制类型转换成Map集合,通过获取mao.get(key)的方式获取对应的想要的值,这样Excel的数据表头处理思路就有了,如下图
表头处理完成后,下面就是如何将数据一一对应到和页面显示的列表表头数据一样了。首先我们要把页面中展示的数据获取到,那到这些数据后,我们通过双层循环遍历的方式利用java API自带的PropertyDescriptor反射也称属性描述器来判断field和查询出来的数据的列属性是否一致,然后添加表头对应的数据,如下图数据表头处理完成后,通过流的方式将装配完成的Excel数据放到指定的服务器文目录下面,将文件文件id返回到前端,前端接收到返回的文件id,通过用户无感知的隐藏click出发点击事件直接下载服务器生成的Excel文件,如下图
至此整个下载的功能就基本结束了,希望这样的思路对你有帮助!!!