本发明涉及表格导出方法,具体涉及一种iop平台的表格导出方法。
背景技术:
近年来随着大数据、云计算的发展,云平台也越来越多。有很多的云平台项目中的信息以表格的形式展示。云平台展示的信息繁多,种类也多样。用户可能需要对表格中的数据进行加工处理,如统计、计算、对比等。但是云平台上的表格不具备强大的类似于office软件的功能。这时就需要给用户提供一个导出表格的功能,用户可以导出表格为excel文件,如需二次加工可借助excel的工具,然后可以留档等。
iop平台表格获取数据的方式有后台分页接口获取、后台不分页接口获取和前端js里直接定义的数组数据三种。传统的表格导出功能只是基于前端的导出已经返回的数据,适用于后两种获取数据的方式。后台分页接口获取的数据是按页获取的,比如一次后台只返回这一页的数据,因此传统的表格导出功能只能导出表格一页的数据,不能导出所有的数据。
技术实现要素:
为解决上述问题,本发明提供一种iop平台的表格导出方法,该方法可针对各种表格获取数据方式导出表格的所有数据为excel格式,方便用户对表格数据进行二次加工以及保存等操作。
本发明的技术方案是:一种iop平台的表格导出方法,包括以下步骤:
初始化表格时传入开闭参数;
当开闭参数为开启状态时,触发导出命令时,根据表格获取数据方式生成导出参数传入后台,后台根据导出参数生成表格下载到本地。
进一步地,所述导出参数包括:列模型参数、导出类型参数。
进一步地,列模型参数包括:表示表格表头上每一列内容的label子参数、表示获取数据中这一列取值的key值field子参数、表示每一列宽度的width子参数。
进一步地,表格获取数据方式为后台分页接口获取时,导出类型参数为dynamic类型;
表格获取数据方式为后台不分页接口获取时,导出类型参数为source类型;
表格获取数据方式为前端js里直接定义数组数据时,导出类型参数为static类型。
进一步地,当表格获取数据方式为后台分页接口获取或后台不分页接口获取时,导出参数还包括获取表格数据的url参数。
进一步地,当表格获取方式为后台分页接口获取时,导出参数还包括分页接口设置参数。
进一步地,当获取表格数据的url参数为/records/1/10,则分页接口设置参数为true;
当获取表格数据的url参数为/records?pageno=1&pagesize=10,则分页接口设置参数为false。
进一步地,当表格获取方式为后台分页接口获取时,导出参数还包括导出数据总数参数。
进一步地,当表格获取数据方式为前端js里直接定义数组数据时,导出参数还包括与列模型参数对应的导出数据参数。
进一步地,导出参数还包括:导出文件名参数。
本发明提供的iop平台的表格导出方法,根据表格获取数据的不同方式向后台传入不同的参数,后台根据相应参数生成excel文件下载到本地,用户可以对此excel文件进行操作等,不仅可以更直观的看到表格中的数据,还可以对表格的数据进行统计、查询、排序等操作。本发明实现针对各种表格获取数据方式导出表格的所有数据为excel格式,方便用户对表格数据进行二次加工以及保存等操作。
附图说明
图1是本发明具体实施例流程方法流程图。
具体实施方式
下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。
本发明提供的iop平台的表格导出方法,其核心思想为:首先在初始化表格的时候传入参数,然后根据参数判断是否开启表格的导出功能;其次若是开启了表格的导出功能,点击导出按钮时,根据表格获取数据的方式生成对应的参数传到后台;最后后台根据传入的参数进行数据的查询以及组装成excel下载到本地。
如图1所示,其具体包括以下步骤:
s1:初始化表格时传入开闭参数;
需要说明的是,开闭参数为开启状态,即为true时,开启表格的导出功能,为关闭状态,即为false时,不开启表格的导出功能。默认值为true。表格生成后,在表格的右下角可添加一个导出表格的按钮,点击该按钮可触发导出命令。
s2:当开闭参数为开启状态时,触发导出命令时,根据表格获取数据方式生成导出参数传入后台,后台根据导出参数生成表格下载到本地。
表格获取数据的方式有三种,分别为后台分页接口获取、后台不分页接口获取和前端js里直接定义数组数据。
这三种表格获取数据方式均必须设置导出参数包括列模型参数、导出类型参数。
其中,列模型参数包括:表示表格表头上每一列内容的label子参数、表示获取数据中这一列取值的key值field子参数、表示每一列宽度的width子参数。具体地,其为列对象数组拼成的字符串‘[{label:"",field:"",width:100},{...}]’,label表格表头上每一列的内容,对应到excel表格的表头的每一列上;field为获取数据中这一列的取值的key值,对应后端代码的实体类中的变量名;width为表格每一列的宽度,根据这个宽度设置生成的excel表格的每一列的宽度。
导出类型参数具体为:表格获取数据方式为后台分页接口获取时,导出类型参数为dynamic类型;表格获取数据方式为后台不分页接口获取时,导出类型参数为source类型;表格获取数据方式为前端js里直接定义数组数据时,导出类型参数为static类型。
当表格获取数据方式为后台分页接口获取时,导出参数还包括:获取表格数据的url参数、分页接口设置参数和导出数据总数参数。当获取表格数据的url参数为/records/1/10,则分页接口设置参数为true;当获取表格数据的url参数为/records?pageno=1&pagesize=10,则分页接口设置参数为false。
当表格获取数据方式为后台不分页接口获取时,导出参数也包括获取表格数据的url参数。
当表格获取数据方式为前端js里直接定义数组数据时,导出参数还包括与列模型参数对应的导出数据参数。导出数据参数,属性需要和列模型中的field子参数对应。
另外,所有表格获取数据方式的导出参数还可设置导出文件名参数。
三种表格获取数据的方式,其对应参数类型具体如下:
(1)后台分页接口(动态导出):data={
_export_cols_:exportcols,
_type_:'dynamic',
_is_rest_:'true',
_total_:total,
_url_:url,
_file_name_:name
}
(2)后台不分页接口(数据源导出):data={
_export_cols_:exportcols,
_type_:'source',
_url_:url,
_file_name_:name
}
(3)静态数据导出(静态导出):data={
_export_cols_:exportcols,
_type_:'static',
_export_datas_:export_datas,
_file_name_:name
}
其中,_export_cols_:表示列模型,列对象数组拼成的字符串‘[{label:"",field:"",width:100},{...}]’,label表格表头上每一列的内容,对应到excel表格的表头的每一列上;field为获取数据中这一列的取值的key值,对应后端代码的实体类中的变量名;width为表格每一列的宽度,根据这个宽度设置生成的excel表格的每一列的宽度。
_file_name_:导出文件的名称,若不填,则默认为un_named。
_type_:导出类型,static为静态导出,source为有数据源的数据导出(通过url获取数据),dynamic为动态导出(导出所有数据)。
_export_datas_:为要导出的数据,属性需要和_export_cols_中的field对应。
_url_:获取表格数据的url。
_total_:导出的数据总数。
_is_rest_(分页接口设置):若url形如:/records/1/10,需要设置_is_rest_参数为true;若url形如:/records?pageno=1&pagesize=10,则设置_is_rest_为false。
生成的这些参数传到后台,后台根据这些参数进行数据查询(静态数据则不需要查询),然后根据查询到的数据结合_export_cols_中的值生成excel表格文件,并下载下来。excel文件的名为参数里_file_name_的值。
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。