Excel文件的校验方法及系统与流程

文档序号:15851011发布日期:2018-11-07 09:55阅读:1183来源:国知局
Excel文件的校验方法及系统与流程

本发明涉及数据处理技术领域,具体涉及一种excel文件的校验方法及系统。

背景技术

在计量器具台账管理领域,每个企业都有几十上百种器具需要录入管理系统,每个器具的信息包括器具固有信息、器具管理信息、器具备案信息等至少几十种信息。目前数据导入常用的校验方法是利用poi、npoi、dataaccess等方法对excel模板数据进行读取和校验,但是现有方案仍存在数据校验的效率低,使用不方便的问题,以及只能支持excel中的文本内容读取和校验,无法实现对excel中的单元格内的公式、数据格式、表格样式等读取和校验,即无法快速判断导入的文本内容的正确性,导致导入后出现乱码、格式错误和不匹配等问题。



技术实现要素:

本发明所要解决的技术问题在于,提供一种用于扩展excel数据的校验类型以及提高校验效率的excel文件的校验方法及系统。

为了解决上述技术问题,本发明提供了一种excel文件的校验方法,包括:

获取目标excel文件;

对目标excel文件进行二进制序列化处理,解析成具有工作表属性的第一集合对象和具有单元格属性的第二集合对象;

采用相同的二进制序列化处理,将系统定制的excel模板文件解析成具有工作表属性的第一模板集合对象和具有单元格属性的第二模板集合对象;

分别对所述第一集合对象和第一模板集合对象、以及所述第二集合对象和第二模板集合对象进行对比校验;

输出校验结果。

其中,分别对所述第一集合对象和第一模板集合对象、以及所述第二集合对象和第二模板集合对象进行对比校验的步骤,包括:

校验第一集合对象与第一模板集合对象中的工作表属性是否匹配,以及校验第二集合对象与第二模板集合对象中的表头单元格属性是否匹配;

若两者均匹配,则校验第二集合对象中的用户区非表头单元格属性的正确性;

若存在不匹配,则输出错误信息。

其中,校验第二集合对象中的用户区非表头单元格属性的正确性的步骤,包括:

读取用户区单元格属性,对其正确性进行循环校验。

其中,在进行二进制序列化处理时,根据excel模板文件忽略非用户区单元格数据;所述二进制序列化处理的步骤,包括:

采用java程序序列化对应文件至内存形成二进制流;

所述输出校验结果的步骤,包括:

以json格式输出校验结果。

其中,在获取目标excel文件的步骤,包括:

将待校验数据导入至获取的excel模板文件中,形成目标excel文件并上传,获取上传的目标excel文件;

在获取目标excel文件的步骤之后,包括:

验证目标excel文件的合法性和/或检查目标excel文件的版本。

其中,所述工作表属性包括工作表名称、位置信息;所述单元格属性包括单元格数据、单元格位置、数据类型、数据格式、公式。

相应地,本发明还提供了一种excel文件的校验系统,包括:

第一获取模块,用于获取目标excel文件;

第一处理模块,用于对目标excel文件进行二进制序列化处理,解析成具有工作表属性的第一集合对象和具有单元格属性的第二集合对象;

第二处理模块,用于采用相同的二进制序列化处理,将系统定制的excel模板文件解析成具有工作表属性的第一模板集合对象和具有单元格属性的第二模板集合对象;

校验模块,用于分别对所述第一集合对象和第一模板集合对象、以及所述第二集合对象和第二模板集合对象进行对比校验;

第一输出模块,用于输出校验结果。

其中,所述校验模块用于校验第一集合对象与第一模板集合对象中的工作表属性是否匹配,以及校验第二集合对象与第二模板集合对象中的表头单元格属性是否匹配;

若两者均匹配,则循环校验第二集合对象中的用户区非表头单元格属性的正确性;若存在不匹配,则输出错误信息。

其中,还包括:

验证模块,用于验证目标excel文件的合法性和/或检查目标excel文件的版本。

其中,所述第一获取模块还用于将待校验数据导入至获取的excel模板文件中,形成目标excel文件并上传,获取上传的目标excel文件;

所述第一处理模块和所述第二处理模块用于分别采用java程序序列化对应文件至内存形成二进制流;

所述输出模块用于以json格式输出校验结果;

所述工作表属性包括工作表名称、位置信息;所述单元格属性包括单元格数据、数据类型、数据格式、公式。

实施本发明实施例,具有如下有益效果:

1)通过将目标excel文件序列化并解析成两个集合对象,如此不仅对单元格数据属性识别速度快,不受本地化影响;而且可扩展excel校验类型,从原来的纯文本数据的校验扩充到工作表、单元格和本地化的校验。

2)通过二进制序列化处理得到二进制流,可便于后续采用二进制的对象比较校验的方式,提高校验效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本发明一实施方式中的excel文件的校验方法的流程图;

图2是本发明一实施方式的计量器具的导入界面示意图;

图3是本发明一实施方式的excel文件的校验系统的架构图。

具体实施方式

为了便于理解本发明技术方案的各个方面、特征以及优点,下面结合附图对本发明进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。

在一实施方式中,如图1所示,提供了一种excel文件的校验方法,该方法可应用到台账管理系统中或企业资源计划,例如计量器具台账管理系统中。该方法包括:

步骤s102、获取目标excel文件。

本实施例中,采用客户端从服务器中下载excel模板文件,将待校验数据导入至获取的excel模板文件中,形成目标excel文件并上传至服务器,服务器获取上传的目标excel文件。可采用b/s模式,从客户端通过web端程序上传目标excel文件至服务器,以此实现浏览器在线且多用户并发访问服务器,使用方便。

excel模板文件是指包含表头数据、数据类型、数据格式和复杂公式等的完整的excel文件。在获取excel模板文件时,可预先对模板文件进行工作表(sheet)、表头单元格以及用户区单元格的的格式、长度、类型等属性进行设置。excel模板文件可根据应用环境或针对不同的部门做相应的定制化调整,也可根据实际需求做版本改进升级。

可在服务器获取目标excel文件之后,验证目标excel文件的合法性和/或检查目标excel文件的版本。优选的同时验证目标excel文件的合法性和检查目标excel文件的版本,为了匹配开发组件,目标excel文件的版本优选为excel2007及以上。待目标excel文件被验证合法且文件版本达到excel2007及以上之后,执行下一环节。

步骤s104、对目标excel文件进行二进制序列化处理,解析成具有工作表属性的第一集合对象和具有单元格属性的第二集合对象。

具体的,所述二进制序列化处理包括但不限于采用java程序序列化目标excel文件至内存形成二进制流,还可采用例如c++等程序来实现二进制序列化。将目标excel文件序列化至二进制流,便于存储和传输,可实现大批量数据的导入。二进制流可包括二进制字符串和二进制数组等数据格式。

经过二进制序列化处理后形成二进制流,再经解析成对象,具体解析为第一集合对象和第二集合对象。具体地,读取对目标excel文件序列化处理形成的二进制流,将获取的二进制数据封装成list对象,将每个工作表属性作为一个对象封装第一集合对象,或将每个单元格的数据以及单元格属性信息作为一个对象封装成第二集合对象。其中,第一集合对象的生成方式的具体事例为:

//集合对象的生成方式

elementdefaultelement=null;

list<element>list=e.elements("sheet")。

每个excel文件均由若干个具有不同属性的sheet工作表做组成,而工作表中包含若干不同属性的单元格。通过将目标excel文件序列化并解析成两个集合对象,如此,可扩展excel校验类型,从原来的纯文本数据的校验扩充到工作表、单元格和本地化的校验。

第一集合对象具有工作表属性,工作表属性包括但不限于工作表名称、位置信息、表间关联等信息。第二集合对象具有单元格属性,单元格属性包括但不限于单元格数据、单元格位置、数据类型、数据格式、公式等信息。如此,便于支持和扩展对工作表的校验以及单元格的完整的数据内容的校验,保证导入的excel数据的正确性,避免导入后出现乱码和格式错误等情形。

步骤s106、采用相同的二进制序列化处理,将系统定制的excel模板文件解析成具有工作表属性的第一模板集合对象和具有单元格属性的第二模板集合对象。

具体的,序列化是将对象状态转换为可保持或传输的格式的过程。本步骤的二进制序列化处理方法与上述步骤s105类似,包括但不限于采用java程序序列化目标excel文件至内存形成二进制流,还可采用例如c++等程序来实现二进制序列化。

将excel模板文件序列化至二进制流,也便于存储和传输。经过序列化处理后得到的二进制流,再经解析成对象,具体解析为第一模板集合对象和第二模板集合对象。具体地,读取对excel模板文件序列化处理形成的二进制流,将获取的二进制数据封装成list对象,将每个工作表属性作为一个对象封装第一模板集合对象,或将每个单元格的数据以及单元格属性信息作为一个对象封装成第二模板集合对象。

第一模板集合对象和第二模板集合对象分别具有工作表属性和单元格属性,工作表属性包括但不限于工作表名称、位置信息、表间关联等信息;单元格属性包括但不限于单元格数据、单元格位置、数据类型、数据格式、公式等信息。此时,第一模板集合对象和第二模板集合对象可分别对应第一集合对象和第一集合对象,方便对应的比较校验,保证导入数据的格式的一致性和正确性。

此外,序列化excel模板文件还方便区分工作表中单元格哪些是固定的制表信息,哪些是用户导入的数据信息;如此可将固定的制表信息所在单元格属性作为校验依据,对其他用户导入的单元格属性进行进一步校验匹配。如此,可进一步保证导入数据和excel模板数据的格式的一致性和正确性,方便根据不同的excel模板文件来实现快速对比校验。

在进行二进制序列化处理时,可根据excel模板文件自动忽略非用户区单元格数据。具体的,可在获取excel模板文件时,设置用户区单元格范围,以降低对非用户区单元格数据的处理,从而提高校验效率。

需要说明的是,步骤s106和步骤s104的顺序可相互调换,当然两者也可同时进行而不分先后顺序。在excel模板文件的版本没有更新的情况下,步骤s106中的序列化和解析的处理步骤可只做一次,以后可直接利用;若excel模板文件的版本更新后,必须执行步骤s106,以保证校验结果的准确性。

步骤s108、分别对所述第一集合对象和第一模板集合对象、以及所述第二集合对象和第二模板集合对象进行对比校验。

此步骤具体为:

步骤s1081、校验第一集合对象与第一模板集合对象中的工作表属性是否匹配,以及校验第二集合对象与第二模板集合对象中的表头单元格属性是否匹配。

通过预先校验工作表属性和表头单元格属性是否匹配,如此可避免在目标excel文件在文件流转和数据输入过程中,工作表和表头的格式或公式等属性被篡改,影响后续数据导入的一致性和准确性。

步骤s1082、若两者均匹配,则校验第二集合对象中的用户区非表头单元格属性的正确性。若存在不匹配,则输出错误信息。

如此,只有当工作表属性和表头单元格属性均相互匹配时,才对非表头单元格属性进行校验。具体的,读取用户区单元格属性,对其正确性进行循环校验。此时的对单元格属性进行循环校验,即对平级的多个属性或限制条件进行校验,直到校验最后一个属性或限制条件,则切换对下一个单元格属性进行循环校验;如此可实现对复杂单元格数据的有效校验。在对单元格属性进行循环校验顺序可为从左到右,从上到下的顺序进行校验,当然也可为其他合理的顺序。校验规则可采用类似于excel模板文件自带的校验规则进行。

若工作表属性和表头单元格属性之一存在不匹配时,则输出错误信息,停止校验。错误信息可是以json格式反馈给客户端。

步骤s110、输出校验结果。

将校验结果以json格式返回给客户端。校验结果可以包含校验是否成功、校验数量、校验出错位置及出错原因等内容。

上述校验过程可在导入excel文件的过程中进行的。若校验合格,则可将excel文件导入管理系统中。

在计量器具台账管理领域,每个企业都有几十上百种器具需要录入管理系统,每个器具的信息包括器具固有信息、器具管理信息、器具备案信息等几十种信息。下面以计量器具台账管理系统为例,具体说明excel文件的导入。图2示意了其中一计量器具的导入界面示意图,器具信息包含自编号、名称、型号规格、测量范围、是否过期、用途及地点等信息。其中的型号规格信息包含多个属性或限制条件。测量范围信息为范围值或定值,可设置该单元格中对应的规格的器具的上下临界范围值。是否过期信息中针对不同状态使用不同颜色,例如若已过期设置预警的红色,其他状态可设置其他颜色。

图3示出了本发明的一excel文件的校验系统的架构图,如图所示,系统包括:

第一获取模块202,用于获取目标excel文件;

第一处理模块204,用于对目标excel文件进行二进制序列化处理,解析成具有工作表属性的第一集合对象和具有单元格属性的第二集合对象;

第二处理模块206,用于采用相同的二进制序列化处理,将系统定制的excel模板文件解析成具有工作表属性的第一模板集合对象和具有单元格属性的第二模板集合对象;

校验模块208,用于分别对所述第一集合对象和第一模板集合对象、以及所述第二集合对象和第二模板集合对象进行对比校验;

第一输出模块210,用于输出校验结果。

在一实施方式中,所述工作表属性包括工作表名称、位置信息;所述单元格属性包括单元格数据、数据类型、数据格式、公式。

在一实施方式中,所述校验模块用于校验第一集合对象与第一模板集合对象中的工作表属性是否匹配,以及校验第二集合对象与第二模板集合对象中的表头单元格属性是否匹配;

若两者均匹配,则循环校验第二集合对象中的用户区非表头单元格属性的正确性;若存在不匹配,则输出错误信息。

在一实施方式中,还包括验证模块,用于验证目标excel文件的合法性和/或检查目标excel文件的版本。

在一实施方式中,所述第一获取模块还用于将待校验数据导入至获取的excel模板文件中,形成目标excel文件并上传,获取上传的目标excel文件。

在一实施方式中,所述第一处理模块和所述第二处理模块用于分别采用java程序序列化对应文件至内存形成二进制流。

在一实施方式中,所述输出模块用于以json格式输出校验结果。

需要说明的是,上述excel文件的校验系统的各个实施方式与所述excel文件的校验方法的对应技术内容完全一致,为了避免重复,在此不再冗述。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用于使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本领域技术人员应当理解,以上所公开的仅为本发明的实施方式而已,当然不能以此来限定本发明之权利范围,依本发明实施方式所作的等同变化,仍属本发明权利要求所涵盖的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1