基于Aviator的Excel数据自动导入方法、装置、终端设备及存
储介质
技术领域
本发明涉及数据处理领域,具体涉及一种基于Aviator的Excel数据自动导入方法、装置、终端设备及存储介质。
背景技术
Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。Aviator的基本过程是将表达式直接翻译成对应的java字节码执行,整个过程最多扫两趟(开启执行优先模式,如果是编译优先模式下就一趟),这样就保证了它的性能超越绝大部分解释性的表达式引擎,测试也证明如此;其次,除了依赖commons-beanutils这个库之外(用于做反射)不依赖任何第三方库,因此整体非常轻量级,整个jar包大小哪怕发展到现在5.0这个大版本,也才430K。同时,Aviator内置的函数库非常“节制”,除了必须的字符串处理、数学函数和集合处理之外,类似文件IO、网络等等你都是没法使用的,这样能保证运行期的安全,如果你需要这些高阶能力,可以通过开放的自定义函数来接入。
互联网发展迭代快速,很多数据处理的应用系统逐渐采用excel导入功能;传统的导入方法为由软件系统统一标准模板,用户按照标准excel模板去整理后导入的软件系统平台;即在用户日常工作中,需要频繁将自有excel数据手工整理成标准excel文档导入到系统平台,致使用户必须重复花费几分钟,甚至几个小时的时间做一些重复工作,耗费大量人力成本。
公开号为CN109117469A的专利申请公开了一种Excel报表文件生成方法、装置、计算机设备及存储介质。所述方法包括:将待展示数据封装成不同的数据对象并设置不同数据对象之间的对应关联关系,根据封装后的不同数据对象绘制Excel页面模板,将封装后的不同数据对象所对应的数据填充到对应的Excel页面模板中以生成对应的Sheet页数据,并根据不同数据对象之间的对应关联关系设置对应的Sheet页数据之间的对应关联关系,以生成Excel报表文件;其中的Excel报表文件生成方法存在以下不足,在对各类Excel包边进行整理归纳时,还需用户按照标准excel模板去整理后导入的软件系统平台,耗费人力,且工作效率低下,还以存在出错的现象。
发明内容
鉴于现有技术中存在的技术缺陷和技术弊端,本发明实施例提供克服上述问题或者至少部分地解决上述问题的一种基于Aviator的Excel数据自动导入方法、装置、终端设备及存储介质,将任意用户的excel数据自动转换成需要的excel输出格式,从而去掉重复的整理excel工作,大大提高工作效率。
作为本发明实施例的一个方面,提供一种基于Aviator的Excel数据自动导入方法,所述方法包括:
获取并分析excel数据的排版模式,确定Aviator表达式的匹配提取规则;
基于Aviator表达式确定excel数据的绝对位置及相对位置,并提取数据对象;
组装所述数据对象,配置视图数据对应的关联信息及与标准输出数据的映射关系;
输出数据。
进一步地,所述“获取并分析excel数据的排版模式,确定Aviator表达式的匹配提取规则”包括:
根据excel数据的组成类型,确定一条完整的业务数据;
根据业务数据是否在一行excel内判定所述排版模式为单行模式或多行多列模式。
进一步地,所述“基于Aviator表达式确定excel数据的绝对位置及相对位置,并提取数据对象”方法包括:
设置提取数据的特征表达式;
遍历提取数据,利用绝对定位方式确定提取数据的第一个行列坐标,定位数据块;
提取数据块对应的数据值,并提取到视图的字段。
进一步地,所述“组装所述数据对象,配置视图数据对应的关联信息及与标准输出数据的映射关系”方法还包括:
组装提取数据,与最终输出的标准字段相关联;
将单个或多个视图对象连接,并将连接的结果字段关联到输出的标准字段;
通过连接方式将提取数据映射到对应的标准字段,设置相应的连接条件表达式。
进一步地,所述方法还包括:
配置视图数据对应的关联信息,将提取好的视图配置到标准对象的关系;
配置每一个视图对象字段与标准输出字段的映射关系,通过aviator表达式对映射的字段进行函数转换和加工。
进一步地,所述方法还包括:通过aviator表达式进行数据初步加工,所述初步加工至少包括:格式提取、类型转换、三元表达式、对象关联拆合。
进一步地,所述方法还包括:选择对应的匹配提取规则进行excel数据导入,通过配置信息进行视图数据的提取,根据关联信息进行数据字段关联和转换,组装为标准对象数据,输出标准的json格式数据到业务端。
作为本发明实施例的再一方面,提供了一种基于Aviator的Excel数据自动导入装置,所述装置包括:
分析模块:用于获取并分析excel数据的排版模式,确定Aviator表达式的匹配提取规则;
提取模块:用于基于Aviator表达式确定excel数据的绝对位置及相对位置,并提取数据对象;
关联模块,用于组装所述数据对象,配置视图数据对应的关联信息及与标准输出数据的映射关系;
输出模块,用于输出标准json数据。
作为本发明实施例的另一方面,提供了一种终端设备,包括:处理器和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述终端设备执行上述任一项所述的基于Aviator的Excel数据自动导入方法。
作为本发明实施例的有一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被终端设备的处理器执行时,使所述处理器执行上述任意一项所述的基于Aviator的Excel数据自动导入方法。
本发明实施例至少实现了如下技术效果:
1、本发明实施例通过软件读取配置,针对任意excel模板匹配的aviator表达式配置数据进行将无规则、杂乱的excel自动转换成标准的excel输出到应用软件系统中,能够自动提取转化Excel数据,实现了Excel数据的人工智能化处理,能够快速配置匹配的用户任意excel文件,并转换成标准json,从而去掉重复的excel转标准格式的大量重复工作,从而提高用户工作效率。
2、基于aviator表达式,实现快速匹配解析任意格式的excel,应用范围广,适用于多种存在差异性的excel文件,节省了成本,保障了企业效益。
3、能够实现智能化的满足单个sheet,及多个sheet数据的清洗、提取及转换、导入;不仅具备高效、快捷的优点,还排除了人工输入错误的可能性,保障了实际应用效果,实用性及鲁棒性强。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所记载的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明一实施例的基于Aviator的Excel数据自动导入流程图;
图2为本发明一实施例的基于Aviator的Excel数据自动导入装置示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
附图和以下说明描述了本发明的可选实施方式以教导本领域技术人员如何实施和再现本发明。为了教导本发明技术方案,已简化或省略了一些常规方面。本领域技术人员应该理解源自这些实施方式的变型或替换将落在本发明的保护范围内。本领域技术人员应该理解下述特征能够以各种方式组合以形成本发明的多个变型。由此,本发明并不局限于下述可选实施方式,而仅由权利要求和它们的等同物限定。
在一个实施例中,如图1所示,提供一种基于Aviator的Excel数据自动导入方法,所述方法包括:
S11获取并分析excel数据的排版模式,确定Aviator表达式的匹配提取规则;
S12基于Aviator表达式确定excel数据的绝对位置及相对位置,并提取数据对象;
S13组装所述数据对象,配置视图数据对应的关联信息及与标准输出数据的映射关系;
S14输出数据。
在本实施例中,基于aviator表达式,实现快速匹配解析任意格式的excel,进行解析转换成标准数据输出,通过实施例方法,可以实现智能识别excel中各个sheet之间的关联,在不同规则排列的数据按照预设的模式进行数据的输出,其中的匹配提取规则可以根据需要进行增加、删除及修改,减少重复的人工配置操作,即当用户对不会的客户的数据导入时,其配置参数可以复制、修改,减少人工配置的时间。
在一个实施例中,所述S11包括:
根据excel数据的组成类型,确定一条完整的业务数据;
根据业务数据是否在一行excel内判定所述排版模式为单行模式或多行多列模式。
在本实施例中,分析excel表格的数据组成类型,可分为单行形式和表单多行多列形式,以一条完整的业务数据为判断标准。如果整条数据在一行excel内则为单行模式,否则为多行多列模式。
基于aviator表达式引擎的表达式,用于匹配符合规则的数据,其中内置多行多列模式关键词headers[行下标][列下标],单行模式关键词headers[列下标]、headers[*],关键词的对象为poi的cell对象。内置关键词对象增加了value方法,可以为通用取值方法。
例如:单行模式的表达式可以是:
headers[*].value==’产品名称’&&headers[0]==’体积’
识别到数据:产品名称为某某巧克力与每个地区的组合数据。
数据1:某某巧克力体积:5.73地区:南昌
单行模式下字段取值支持相对下标和绝对下标,可以分别使用&和字母表示绝对下标,数字表示相对下标。
例如:数据定位的下标为行1列3
cells[1][1]表示sheet绝对坐标第2行,第4列的单元格。
cells[&2][&4]等同cells[1][1]
cells[1][‘D’]或cells[1][‘d’]等同cells[1][1]
单行模式的字段取值表达式可以使用关键词cells[列下标],cells[行下标][列下标]及cells[*],其中,cells[列下标]表示字段取值为每一行的某个列。cells[行下标][列下标]中行下标表示的是相对当前遍历的行的行下标。例如当前遍历的行为9,则cells[1][0],表示9+1行,0列;cells[*]用于遍历所有列的数据,配合条件表达式使用。
单行模式字段条件表达式可使用的关键词同值表达式关键词cells[列下标],cells[行下标][列下标]及cells[*]cells[*]表示遍历所有列。例如场景,客户的字段名不变,当时列的顺序是变化的。
条件表达式为:cells[*].value==’订单号’值表达式:cells[*].value;只要有列头是‘订单号’的字段即为所取的值。不用关心字段的顺序,也不用行坐标和列坐标。
多行多列模式的取值表达式可以使用关键词area[行下标][列下标],这里表示相对定位,用于匹配符合两个下标的条件数据。其中:行下标和列下标用于定义符合条件的下标的序号,行下标和列下标相对于循环规则条件表达式所编排的下标。
例如:string.contains(area[0][0].stringCellValue,'收货地址')
&&string.contains(area[1][0].stringCellValue,'收货单位')
多行多列的条件表达式可以参照取值表达式,使用area[行坐标][列坐标],用于限制当前字段是否取值,如果有设置条件表达式,则符合条件表达式或表达式为空才给当前当条遍历的数据的当前字段赋值,不符合表达式则不赋值。
在一个实施例中,所述S12方法包括:
设置提取数据的特征表达式;
遍历提取数据,利用绝对定位方式确定提取数据的第一个行列坐标,定位数据块;
提取数据块对应的数据值,并提取到视图的字段。
在本实施例中,利用aviator,配置表头的分布规则。首先提取excel文件的视图数据,设置excel文件类型(单行、多行多列数据排列)。设置提取数据的特征表达式,利用相对定位和绝对定位方式。找到需要将excel提取数据的第一个行列坐标。如:area[0][0].value==’商品名称’,表示从包含商品名称的开始提取数据。当定位好数据块的位置之后,接着提取具体数据块对应的数据值。如:area[0][1].value==’商品价格’,并提取到视图的字段。
在一个实施例中,所述S13方法还包括:
组装提取数据,与最终输出的标准字段相关联;
将单个或多个视图对象连接,并将连接的结果字段关联到输出的标准字段;
通过连接方式将提取数据映射到对应的标准字段,设置相应的连接条件表达式。
在本实施例中,将提取的数据进行组装和字段关联到最终输出的标准字段。通过单个或多个视图对象进行连接(类似表连接),并将连接的结果字段关联到输出的标准字段。标准输出的字段允许出现嵌套集合,同样通过连接方式将excel提取视图数据映射到对应的标准集合字段。并设置相应的连接条件表达式。
在一个实施例中,所述方法还包括:
配置视图数据对应的关联信息,将提取好的视图配置到标准对象的关系;
配置每一个视图对象字段与标准输出字段的映射关系,通过aviator表达式对映射的字段进行函数转换和加工。
在本实施例中,配置所提取的数据对象,可以绑定多个,如果是多个则以类似与多表的无条件连接的数据结果。结果数据数量将是最终提供给业务的数据数量。标准字段没有界面功能,可以通过配置t_trans_object(标准输出主表)、t_trans_field(标准输出字段)来定义。如的客户单号、客户编码等字段。如果是集合字段,通过parent_id来做嵌套子集组合。字段取值同样使用aviator表达式写法,每个字段可取上下文变量为绑定对象;解析器会遍历绑定的对象。如果是集合类型的字段同绑定对象一样,集合字段增加条件表达式,用于过滤数据。
在一个实施例中,所述方法还包括:通过aviator表达式进行数据初步加工,所述初步加工至少包括:格式提取、类型转换、三元表达式、对象关联拆合。
在一个实施例中,所述方法还包括:选择对应的匹配提取规则进行excel数据导入,通过配置信息进行视图数据的提取,根据关联信息进行数据字段关联和转换,组装为标准对象数据,输出标准的json格式数据到业务端。
JSON:一种与开发语言无关的、轻量级的数据存储格式,全称JavaScriptObjectNotation,一种数据格式的标准规范,起初来源于JavaScript这门语言,后来随着使用的广泛,几乎每门开发语言都有处理JSON的API。json的基本类型有objects(dicts),arrays(lists),strings,numbers,booleans,andnulls(json中关键字)。在一个object中所有的key都要是字符串。
在本实施例中,自动将excel文件安装前面配置好的提取和关联规则实现excel文件数据转换输出成标准的json格式。另外,本实施例方法还可以实现视图识别及数据预览,视图识别是根据表达式,在线excel测试解析标记显示,用于验证表达式是否定位正确;根据配置的规则进行数据解析预览,用于测试表达式解析的数据效果。
在一个实施例中,所述方法包括:
S21、分析excel的数据排版模式,分单行形式和多行多列;
其中,分析标准即一条完整的业务数据是否在一行上完全展示,如果能在一行上完整展示并有规律的循环则为单行形式。反过来,若一条完整的数据需要由多行多列组成,则为多行多列模式。并确认循环的规律是固定的。
S22、配置列头和具体定位表达式,用于解析执行器确认每一条数据的第一个字段的绝对位置。
S23、配置提取的数据每一个需要的字段,并可通过aviator表达式引擎进行格式提取、类型转换、三元表达式及对象关联拆合的初步数据加工操作的配置。
S24、配置视图数据对应的关联信息,将提取好的视图配置到标准对象的关系,并配置每一个视图对象字段与标准输出字段的映射关系,通过aviator表达式引擎对映射的字段进行函数转换和加工。
S25、用户通过选择对应的配置信息进行excel数据导入,智能excel引擎通过配置的信息和文件进行视图数据的提取,然后根据配置关联信息进行数据字段关联和转换,最终进行组装成完整的标准对象数据,然后输出数据到业务消费端。
基于同一发明构思,本发明实施例还提供了基于Aviator的Excel数据自动导入装置,由于本实施基于Aviator的Excel数据自动导入装置所解决问题的原理与前述实施例的基于Aviator的Excel数据自动导入方法相似,因此基于Aviator的Excel数据自动导入装置的实施可以参见前述一种基于Aviator的Excel数据自动导入方法的实施例,重复之处不再赘述。
本发明实施例提供了一种基于Aviator的Excel数据自动导入装置,如图2所示,所述装置包括:
分析模块11,用于获取并分析excel数据的排版模式,确定Aviator表达式的匹配提取规则;
提取模块12,用于基于Aviator表达式确定excel数据的绝对位置及相对位置,并提取数据对象;
关联模块13,用于组装所述数据对象,配置视图数据对应的关联信息及与标准输出数据的映射关系;
输出模块14,用于输出标准json数据。
在本实施例中,根据用户excel行列数据形式,创建一个匹配规则,设置用户excel行列数据类型(单行、多行多列两种类型);通过aviator表达式提取用户excel的数据;提取的excel数据进行组装、字段映射和利用aviator进行初步处理;用户导入已配置excel文件;通过配置的规则,解析excel文件,并转成标准的json数据格式输出到软件应用系统。
本实施例将aviator技术与EXCEL数据提取相结合,通过软件读取配置,针对任意excel模板匹配的aviator表达式配置数据进行将无规则、杂乱及复杂的excel自动转换成标准的excel输出到应用软件系统中;能够满足单个sheet,及多个sheet数据的提取,实现智能化的数据清洗、提取及转换、导入。
基于同一发明构思,本发明实施例还提供了终端设备及计算机可读存储介质,由于本实施终端设备及计算机可读存储介质所解决问题的原理与前述实施例的基于Aviator的Excel数据自动导入方法相似,因此终端设备及计算机可读存储介质的实施可以参见前述一种基于Aviator的Excel数据自动导入方法的实施例,重复之处不再赘述。
在一个实施例中,提供了一种终端设备,包括:处理器和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述终端设备执行上述任一项所述的基于Aviator的Excel数据自动导入方法。
在一个实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被终端设备的处理器执行时,使所述处理器执行上述任意一项所述的基于Aviator的Excel数据自动导入方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。