CN113836213A - 基于Excel的数据导入方法、装置、设备及存储介质 - Google Patents

基于Excel的数据导入方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113836213A
CN113836213A CN202111151147.7A CN202111151147A CN113836213A CN 113836213 A CN113836213 A CN 113836213A CN 202111151147 A CN202111151147 A CN 202111151147A CN 113836213 A CN113836213 A CN 113836213A
Authority
CN
China
Prior art keywords
data
progress
import
excel
data import
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111151147.7A
Other languages
English (en)
Other versions
CN113836213B (zh
Inventor
李璞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202111151147.7A priority Critical patent/CN113836213B/zh
Publication of CN113836213A publication Critical patent/CN113836213A/zh
Application granted granted Critical
Publication of CN113836213B publication Critical patent/CN113836213B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据处理领域,公开了一种基于Excel的数据导入方法、装置、设备及存储介质,用于解决现有基于Excel的数据导入的技术问题。该方法包括:获取来自前端的数据导入请求,并提取数据导入请求中包含的待导入的Excel文件;基于Excel文件创建并发布数据导入事件,并生成数据导入事件的事件编码;响应于数据导入事件,根据预置的导入规则注解将Excel文件中的待导入数据添加到list集合中;对待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据事件编码将数据导入进度返回给前端;在待导入数据全部保存添加至list集合后,将list集合中的数据保存至数据库中,完成数据导入。此外,本发明还涉及区块链技术,Excel文件中的相关信息可存储于区块链中。

Description

基于Excel的数据导入方法、装置、设备及存储介质
技术领域
本发明涉及数据处理领域,尤其涉及一种基于Excel的数据导入方法、装置、设备及存储介质。
背景技术
随着科技的发展,各企业的IT架构日益庞大,Excel数据处理已经成为从事IT互联网研发业务单元不可避免的部分,随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。在数据量极大的情况下,将业务需要的数据导入数据平台的技术、方法和手段已经成为现实世界的迫切需求。
当下互联网业务单元在需要获取数据时可以通过导入Excel文件的方式获取数据,可以利用spark、kettle等工具,但当下现有工具的简易Excel导入功能在进行大数据量的数据的导入时,如果一次导入过多的数据到后台系统会引起后台服务器接口超时,故需要分批导入;通常的Excel导入无法获得导入数据的保存进度,且管理员无法获知导入的数据是否成功。
发明内容
本发明的主要目的在于解决现有技术中对数据量较大的Excel文件进行数据导入时不能获取导入进度,且容易出现导入失败的问题。
本发明第一方面提供了一种基于Excel的数据导入方法,包括:获取来自前端的数据导入请求,并提取所述数据导入请求中包含的待导入的Excel文件;基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码;响应于数据导入事件,根据预置的导入规则注解将Excel文件中的待导入数据添加到list集合中;对待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据事件编码将数据导入进度返回给前端;在所述待导入数据全部保存添加至所述list集合后,将所述list集合中的数据保存至数据库中,完成数据导入。
可选的,在本发明第一方面的第一种实现方式中,所述基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码包括:解析所述Excel文件得到所述Excel文件中的数据列名,并根据所述数据列名生成Visibility User对象;根据所述Excel文件和所述Visibility User对象生成entity对象,并生成所述entity事件的唯一编码;调用Visibility User Service对entity对象进行发布,得到数据导入事件,并将所述唯一编码保存为所述数据导入事件的事件编码。
可选的,在本发明第一方面的第二种实现方式中,所述根据预置的导入规则注解将所述Excel文件中的待导入数据添加到list集合中包括:通过ApachePOI对所述Excel文件进行解析,得到sheet对象;提取所述sheet对象中包含的对象数据;基于预置的导入规则注解将所述对象数据写入到Visibility User对象中,得到写入完毕的Visibility User对象;将所述写入完毕的Visibility User对象保存至list集合中。
可选的,在本发明第一方面的第三种实现方式中,所述对所述待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据所述事件编码将所述数据导入进度返回给前端包括:响应于所述数据导入事件,生成进度监控异步线程;提取所述数据导入事件中的Excel文件解析为sheet对象的解析进度,并判断是否完成解析;若是,则获取所述list集合的数据保存进度,根据所述list集合的数据保存进度计算出数据导入进度,并将所述数据导入进度写入Redis数据库中;接收进度获取接口的导入进度获取请求,并提取所述进度获取请求中包含的事件编码;根据所述事件编码在所述Redis数据库中查找最新的数据导入进度,并将所述最新的数据导入进度发送至前端。
可选的,在本发明第一方面的第四种实现方式中,所述获取所述list集合的数据保存进度,根据所述list集合的数据保存进度计算出数据导入进度,并将所述数据导入进度写入Redis数据库中包括:提取所述list集合中被标记为已保存至后台数据库中的数据,得到已落表数据;计算所述已落表数据占全部数据的比例,得到落表数据比例;根据所述落表数据比例计算出落表进度,将所述落表进度与所述解析进度相加,得到数据导入进度。
可选的,在本发明第一方面的第五种实现方式中,所述将所述最新的数据导入进度发送至前端还包括:根据所述最新的数据导入进度获取对应的进度展示素材;根据所述进度展示素材生成数据导入进度动图,并将所述导入进度动图显示在前端网页上。
可选的,在本发明第一方面的第六种实现方式中,在所述获取来自前端的数据导入请求之前,还包括:获取待导入的Excel文件中包含的Excel字段;根据所述Excel字段定义Java类以及Java类中的成员,其中,所述成员与所述Excel字段对应;获取待导入的Excel字段的数据列名和数据类型;根据所述数据列名和所述数据类型生成公用的java注解,并将所述java注解添加至对应的所述成员上。
本发明第二方面提供了一种基于Excel的数据导入装置,包括:获取模块,用于获取来自前端的数据导入请求,并提取所述数据导入请求中包含的待导入的Excel文件;发布模块,用于基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码;导入模块,用于响应于所述数据导入事件,根据预置的导入规则注解将所述Excel文件中的待导入数据添加到list集合中;进度监控模块,用于对所述待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据所述事件编码将所述数据导入进度返回给前端;入库模块,用于在所述待导入数据全部保存添加至所述list集合后,将所述list集合中的数据保存至数据库中,完成数据导入。
可选的,在本发明第二方面的第一种实现方式中,所述发布模块包括:第一对象生成单元,用于解析所述Excel文件得到所述Excel文件中的数据列名,并根据所述数据列名生成Visibility User对象;第二对象生成单元,用于根据所述Excel文件和所述Visibility User对象生成entity对象,并生成所述entity事件的唯一编码;事件发布单元,用于调用Visibility User Service对entity对象进行发布,得到数据导入事件,并将所述唯一编码保存为所述数据导入事件的事件编码。
可选的,在本发明第二方面的第二种实现方式中,所述导入模块包括:解析单元,用于通过Apache POI对所述Excel文件进行解析,得到sheet对象;提取单元,用于提取所述sheet对象中包含的对象数据;写入单元,用于基于预置的导入规则注解将所述对象数据写入到Visibility User对象中,得到写入完毕的Visibility User对象;保存单元,用于将所述写入完毕的Visibility User对象保存至list集合中。
可选的,在本发明第二方面的第三种实现方式中,所述进度监控模块包括:线程生成单元,用于响应于所述数据导入事件,生成进度监控异步线程;进度判断单元,用于提取所述数据导入事件中的Excel文件解析为sheet对象的解析进度,并判断是否完成解析;进度获取单元,用于若是,则获取所述list集合的数据保存进度,根据所述list集合的数据保存进度计算出数据导入进度,并将所述数据导入进度写入Redis数据库中;编码提取单元,用于接收进度获取接口的导入进度获取请求,并提取所述进度获取请求中包含的事件编码;进度输出单元,用于根据所述事件编码在所述Redis数据库中查找最新的数据导入进度,并将所述最新的数据导入进度发送至前端。
可选的,在本发明第二方面的第四种实现方式中,所述进度获取单元具体用于:提取所述list集合中被标记为已保存至后台数据库中的数据,得到已落表数据;计算所述已落表数据占全部数据的比例,得到落表数据比例;根据所述落表数据比例计算出落表进度,将所述落表进度与所述解析进度相加,得到数据导入进度。
可选的,在本发明第二方面的第五种实现方式中,所述基于Excel的数据导入装置还包括进度展示模块,所述进度展示模块包括:素材提取单元,用于根据所述最新的数据导入进度获取对应的进度展示素材;进度展示单元,用于根据所述进度展示素材生成数据导入进度动图,并将所述导入进度动图显示在前端网页上。
可选的,在本发明第二方面的第六种实现方式中,所述基于Excel的数据导入装置还包括规则注解配置模块,所述规则注解配置模块包括:字段提取单元,用于获取待导入的Excel文件中包含的Excel字段;成员定义单元,用于根据所述Excel字段定义Java类以及Java类中的成员,其中,所述成员与所述Excel字段对应;内容获取单元,用于获取待导入的Excel字段的数据列名和数据类型;注解配置单元,用于根据所述数据列名和所述数据类型生成公用的java注解,并将所述java注解添加至对应的所述成员上。
本发明第三方面提供了一种基于Excel的数据导入设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于Excel的数据导入设备执行上述的基于Excel的数据导入方法的步骤。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于Excel的数据导入方法的步骤。
本发明提供的技术方案中,获取来自前端的数据导入请求,并提取数据导入请求中包含的待导入的Excel文件;基于Excel文件创建并发布数据导入事件,并生成数据导入事件的事件编码;响应于数据导入事件,根据预置的导入规则注解将Excel文件中的待导入数据添加到list集合中;对待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据事件编码将数据导入进度返回给前端;在待导入数据全部保存添加至list集合后,将list集合中的数据保存至数据库中,完成数据导入。本发明实施例中的技术方案,通过创建spring事件的功能发布数据导入异步事件以代替直接导入数据,通过spring监听器根据spring事件中包含的具体内容结合java反射机制实现数据导入,从而避免由于一次导入过多数据导致后台服务器接口超时,不清楚是否导入成功的现象;该方案能够提高导入的成功率,且可实时获取文件的导入进度。
附图说明
图1为本发明实施例中基于Excel的数据导入方法的第一实施例的示意图;
图2为本发明实施例中基于Excel的数据导入方法的第二实施例的示意图;
图3为本发明实施例中基于Excel的数据导入方法的第三实施例的示意图;
图4为本发明实施例中基于Excel的数据导入方法的第四实施例的示意图;
图5为本发明实施例中基于Excel的数据导入装置的一个实施例示意图;
图6为本发明实施例中基于Excel的数据导入装置的另一个实施例示意图;
图7为本发明实施例中基于Excel的数据导入设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种基于Excel的数据导入方法、装置、设备及存储介质,获取来自前端的数据导入请求,并提取数据导入请求中包含的待导入的Excel文件;基于Excel文件创建并发布数据导入事件,并生成数据导入事件的事件编码;响应于数据导入事件,根据预置的导入规则注解将Excel文件中的待导入数据添加到list集合中;对待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据事件编码将数据导入进度返回给前端;在待导入数据全部保存添加至list集合后,将list集合中的数据保存至数据库中,完成数据导入。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中基于Excel的数据导入方法的一个实施例包括:
101、获取来自前端的数据导入请求,并提取数据导入请求中包含的待导入的Excel文件;
可以理解的是,本发明的执行主体可以为基于Excel的数据导入装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
用户在使用应用或者网页的前端时,由于应用或者网页的前端计算及保存的功能有限,其中,当需要进行录入的表格数据中数据量较大时,需要进行表格数据的录入时需要将表格数据导入到数据库中进行保存,以便后续对这些数据进行操作。具体地,可以通过上传Excel文件的方式进行数据的导入,其中,Excel文件指Microsoft Excel,是一款电子表格软件。
在本步骤中,用户在需要接受数据的应用或者网页的前端上传Excel文件并向服务器发送数据导入请求,服务器接收来自前端的数据导入请求后,调用预先设定好的Excel导入接口,接收所述数据导入请求中包含的Excel文件,其中,所述预先设定好的Excel导入接口可以为Multipart File接口,通过Multipart File接口接收并解析所述Excel文件中包含的二进制数据和该Excel文件的文件名称。
102、基于Excel文件创建并发布数据导入事件,并生成数据导入事件的事件编码;
解析前述步骤得到的Excel文件中包含的表格中各数据列的信息,根据所述数据列的名称分配每个数据列对应的适配对象。根据前述得到的Excel文件的二进制数据、文件名称以及Excel文件每个数据列对应的适配对象生成entity对象,并基于entity对象发布数据导入事件,其中,在发布数据导入事件时可以通过Spring事件进行发布;在发布数据导入事件的同时,生成所述数据导入事件的唯一编码。
103、响应于数据导入事件,根据预置的导入规则注解将Excel文件中的待导入数据添加到list集合中;
本实施例中的数据导入方法中预先构建有Spring的监听线程对Spring事件进行监听,在数据导入事件发布后,Spring的监听线程监听到发布的所述数据导入事件后,提取所述entity对象中包含的Excel文件,对Excel文件中的数据进行解析,并根据Java反射原理将解析得到的数据保存至list集合中。
其中,Spring框架是一个开放源代码的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器(lightweight container),其解决了开发者在J2EE开发中遇到的许多常见的问题。
104、对待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据事件编码将数据导入进度返回给前端;
获取到前述步骤中数据导入事件的事件编码后,生成进度监控异步线程,该进度监控异步线程对所述数据导入事件进行监听,根据预置的进度计算方式计算数据导入进度,并将计算出的数据导入进度和对应的事件编码保存至Redis数据库中。其中,所述进度监控异步线程根据预设的进度计算频率,每隔一定时间计算数据导入进度,并根据计算得到的数据导入进度对所述Redis数据库中包含的数据进行更新。具体地,所述数据导入进度包括数据解析进度和数据落表进度,所述数据解析进度指将上传得到的Excel文档解析为java的sheet对象的进度,所述数据落表进度指前述步骤中将Excel文档中的数据保存至list集合中的进度。前端在发送数据导入请求后,会根据预设的进度获取规则,根据数据解析进度及数据落表进度计算出数据导入进度,并将数据导入进度保存至数Redis数据库中。前端每隔一段时间根据时间编码向Redis数据库中发送进度获取请求从而获取最新的进度数据,并将所述进度数据返回至前端并进行展示。
其中,Redis(Remote Dictionary Server),为远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库
105、在待导入数据全部保存添加至list集合后,将list集合中的数据保存至数据库中,完成数据导入。
在所述待导入数据全部保存添加至所述list集合后,将list集合中的数据写入数据库中,当写入完毕后完成数据的导入,并根据所述list集合中的具体数据条目,返回数据导入结果。
本发明实施例的技术方案能够提高导入的成功率,且可实时获取文件的导入进度。
请参阅图2,本发明实施例中基于Excel的数据导入方法的第二实施例包括:
201、获取来自前端的数据导入请求,并提取数据导入请求中包含的待导入的Excel文件;
用户在前端上传Excel文件并向服务器发送数据导入请求,服务器接收来自前端的数据导入请求后,调用预先设定好的Excel导入接口,接收所述数据导入请求中包含的Excel文件,其中,所述预先设定好的Excel导入接口可以为Multipart File接口,通过Multipart File接口接收并解析所述Excel文件中包含的二进制数据和该Excel文件的文件名称。
202、解析Excel文件得到Excel文件中的数据列名,并根据数据列名生成Visibility User对象;
203、根据Excel文件和Visibility User对象生成entity对象,并生成entity事件的唯一编码;
204、调用Visibility User Service对entity对象进行发布,得到数据导入事件,并将唯一编码保存为数据导入事件的事件编码;
解析所述Excel文件中包含的所述Excel文件中各数据列的信息,根据所述数据列的名称分配每个数据列对应的适配对象,其中,本步骤中的适配对象为Visibility User对象。
对所述Excel文件进行解析得到所述Excel文件的二进制数据和文件名称,提取前述得到的Visibility User对象,根据这些信息构建entity对象,并通过Visibility UserService基于所述entity对象发布数据导入事件,其中,所述Visibility User Service为一个Spring事件源对象;在发布数据导入事件的同时,生成所述数据导入事件的唯一编码,并将所述事件编码返回给前端。
205、响应于数据导入事件,通过Apache POI对Excel文件进行解析,得到sheet对象;
206、提取sheet对象中包含的对象数据;
207、基于预置的导入规则注解将对象数据写入到Visibility User对象中,得到写入完毕的Visibility User对象;
208、将写入完毕的Visibility User对象保存至list集合中;
本实施例中的数据导入方法中预先构建有Spring的监听线程对Spring事件进行监听,在数据导入事件发布后,Spring的监听线程监听到发布的所述数据导入事件后,提取所述entity对象中包含的Excel文件。调用预置的Apache POI工具对Excel文件进行解析,得到Excel文件中包含的数据,其中,Apache POI是一个开放源码函式库,POI提供API(Application Programming Interface,应用程序接口)给Java程序对Microsoft Office格式档案读和写的功能,其中包含的HSSF提供读写Microsoft Excel格式档案的功能。
根据Java反射机制将解析得到的数据写入Visibility User对象中,具体地,在进行数据导入操作前,获取与进行数据导入的Excel的数据种类字段,根据种类字段定义公用的Java注解,其中民主街中包干的属性与Excel中的信息进行对应,随后根据配置的注解,调用Java反射机制对解析得到的数据写入VisibilityUser对象中,并将得到的写入完毕的对象保存至list集合中。后续待全部数据都写入list集合中后,基于list集合将数据保存至数据库中。
209、对待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据事件编码将数据导入进度返回给前端;
前端在发送数据导入请求后,会根据预设的进度获取规则,每隔一段时间根据时间编码向Redis数据库中发送进度获取请求从而获取最新的进度数据,并将所述进度数据返回至前端。
210、在待导入数据全部保存添加至list集合后,将list集合中的数据保存至数据库中,完成数据导入。
在所述待导入数据全部保存添加至所述list集合后,将list集合中的数据写入数据库中,当写入完毕后完成数据的导入,并根据所述list集合中的具体数据条目,返回数据导入结果。
本发明实施例的技术方案能够提高数据量很大的Excel文件的数据导入的成功率,且可实时获取文件的导入进度。
请参阅图3,本发明实施例中基于Excel的数据导入方法的第三实施例包括:
获取待导入的Excel文件中包含的Excel字段;根据Excel字段定义Java类以及Java类中的成员,其中,成员与Excel字段对应;获取待导入的Excel字段的数据列名和数据类型;根据数据列名和数据类型生成公用的java注解,并将java注解添加至对应的成员上。
301、获取来自前端的数据导入请求,并提取数据导入请求中包含的待导入的Excel文件;
用户在前端上传Excel文件并向服务器发送数据导入请求,服务器接收来自前端的数据导入请求后,调用预先设定好的Excel导入接口,接收所述数据导入请求中包含的Excel文件。
302、基于Excel文件创建并发布数据导入事件,并生成数据导入事件的事件编码;
解析所述Excel文件中包含的各数据列的信息,根据所述数据列的名称分配每个数据列对应的适配对象。根据前述得到的Excel文件的二进制数据、文件名称以及Excel文件每个数据列对应的适配对象生成entity对象,并基于entity对象发布数据导入事件,同时生成所述数据导入事件的唯一编码,并将所述事件编码返回给前端。
303、响应于数据导入事件,通过Apache POI对Excel文件进行解析,得到sheet对象;
304、提取sheet对象中包含的对象数据;
305、基于预置的导入规则注解将对象数据写入到Visibility User对象中,得到写入完毕的Visibility User对象;
306、将写入完毕的Visibility User对象保存至list集合中;
本实施例中步骤303-步骤306中内容与前述实施例中步骤205-步骤208中基本相同,故在此不再赘述,
307、响应于数据导入事件,生成进度监控异步线程;
本实施例中,在Spring监听器接收到有事件发布时,判断所述监听器是否为导入类事件,若确定当前监听到的事件为导入类事件后,生成进度监控异步线程,其中,所述进度监控异步线程在entity对象中获取数据导入进度。
308、提取数据导入事件中的Excel文件解析为sheet对象的解析进度,并判断是否完成解析;
具体进行数据进度的监控时,首先提取当前数据导入事件的Excel解析为sheet对象的解析进度,判断当前的Excel文件是否已完成解析。若否,则进度标注为小于10%。
309、若是,则获取list集合的数据保存进度,根据list集合的数据保存进度计算出数据导入进度,并将数据导入进度写入Redis数据库中;
若当前的Excel文件已完成解析,则继续获取entity对象中Excel文件中已经保存在list集合中的数据条目,根据已经保存的数据条目和Excel文件中的全部数据条目计算出数据导入进度,并保存至Redis数据库中。
310、接收进度获取接口的导入进度获取请求,并提取进度获取请求中包含的事件编码;
其中,预先在所述Redis数据库上设置监控进度获取接口,通过监控进度获取接口接收进度获取接口的导入进度获取请求,并提取所述进度获取请求中包含的事件编码;在所述Redis数据库中查找该事件编码对应的最新的数据导入进度,并将所述最新的数据导入进度发送至前端。
311、根据事件编码在Redis数据库中查找最新的数据导入进度,并将最新的数据导入进度发送至前端;
本步骤中具体内容与前述实施例中步骤209中内容基本相同,故在此不再赘述。
312、在待导入数据全部保存添加至list集合后,将list集合中的数据保存至数据库中,完成数据导入。
本步骤中具体内容与前述实施例中步骤105中内容基本相同,故在此不再赘述。
本发明实施例的技术方案能够提高数据量很大的Excel文件的数据导入的成功率,且可实时获取文件的导入进度。
请参阅图4,本发明实施例中基于Excel的数据导入方法的第四实施例包括:
在本实施例中的数据导入方法是针对于数据量很大的Excel表格进行数据导入的,其中,在进行导入操作之前,预先获取待导入的Excel文件中包含的Excel字段,根据所述Excel字段定义Java类以及Java类中的成员,其中,所述成员与所述Excel字段对应;例如,当本实施例中的Excel文件为培训课程的学员信息时,Excel中的字段可以为用户id字段、学习日期字段等;则此时定义一个java类,类中的成员和Excel中的字段一一对应,即成员包括用户id成员,学习日期成员;
随后,获取待导入的Excel字段的数据列名和数据类型;根据所述数据列名、数据类型生成公用的java注解,并将所述java注解添加至对应的所述成员上。具体地,定义一个公用的java注解,注解包含多个属性,其中,该属性具体包括多个,各属性可以具体如下所述:一个属性记录java类中成员在Excel中对应的列,一个属性设置Excel中的列名,一个属性标识Excel中某个列的数据类型,如字符串、数字或者日期。把注解打在java类中对应的成员上,这样java类的成员就和Excel中的列一一对应,后续即可以根据java类的成员获取Excel中的每列中包含的数据。
401、获取来自前端的数据导入请求,并提取数据导入请求中包含的待导入的Excel文件;
本步骤中内容与前述实施例中步骤101中内容基本相同,故在此不再赘述。
402、解析Excel文件得到Excel文件中的数据列名,并根据数据列名生成Visibility User对象;
403、根据Excel文件和Visibility User对象生成entity对象,并生成entity事件的唯一编码;
404、调用Visibility User Service对entity对象进行发布,得到数据导入事件,并将唯一编码保存为数据导入事件的事件编码;
本实施例中步骤402-步骤404中内容与前述实施例中步骤202-204中内容基本相同,故在此不再赘述。
405、响应于数据导入事件,通过Apache POI对Excel文件进行解析,得到sheet对象;
406、提取sheet对象中包含的对象数据;
407、基于预置的导入规则注解将对象数据写入到Visibility User对象中,得到写入完毕的Visibility User对象;
408、将写入完毕的Visibility User对象保存至list集合中;
本实施例中步骤405-步骤408中内容与前述实施例中步骤205-208中内容基本相同,故在此不再赘述。
409、响应于数据导入事件,生成进度监控异步线程;
410、提取数据导入事件中的Excel文件解析为sheet对象的解析进度,并判断是否完成解析;
本实施例中步骤409-步骤410中内容与前述实施例中步骤307-308中内容基本相同,故在此不再赘述。
411、若是,则提取list集合中被标记为已保存至后台数据库中的数据,得到已落表数据;
412、计算已落表数据占全部数据的比例,得到落表数据比例;
413、根据落表数据比例计算出落表进度,将落表进度与解析进度相加,得到数据导入进度;
具体地,在进行数据导入进度的计算时,数据导入的进度中10%为的数据解析进度,90%设置为数据落表进度,也即是说,若当前的Excel文件已完成解析时其数据导入进度即标记为10%,随后根据预设的进度更新时间,每隔预设时间计算一次已经保存的数据条目和Excel文件中的全部数据条目的比值,得到落表进度,将所述落表进度乘以90%与数据解析进度相加,得到的进度值保存至Redis数据库中。
其中,所述预设时间设置为1毫秒,即每10毫秒计算一次已经保存的数据条目和Excel文件中的全部数据条目的比值,直到全部数据保存到数据库,把这个进度值以key-value的形式保存到Redis中,其中key就是前面生产的唯一事件编码,value就是前述的百分比数据。
414、接收进度获取接口的导入进度获取请求,并提取进度获取请求中包含的事件编码;
本步骤中具体内容与前述实施例中步骤310中内容基本相同,故在此不再赘述。
415、根据事件编码在Redis数据库中查找最新的数据导入进度,并将最新的数据导入进度发送至前端;
在所述Redis数据库上设置监控进度获取接口,通过监控进度获取接口接收进度获取接口的导入进度获取请求,并提取所述进度获取请求中包含的事件编码;在所述Redis数据库中查找该事件编码对应的最新的数据导入进度,并根据最新的数据导入进度获取对应的进度展示素材;根据进度展示素材生成数据导入进度动图,并将导入进度动图显示在前端网页上。
416、在待导入数据全部保存添加至list集合后,将list集合中的数据保存至数据库中,完成数据导入。
在所述待导入数据全部保存添加至所述list集合后,将list集合中的数据写入数据库中,当写入完毕后完成数据的导入,并根据所述list集合中的具体数据条目,返回数据导入结果。
本发明实施例中的技术方案,通过创建spring事件的功能发布数据导入异步事件以代替直接导入数据,通过spring监听器根据spring事件中包含的具体内容结合java反射机制实现数据导入,从而避免由于一次导入过多数据导致后台服务器接口超时,不清楚是否导入成功的现象;该方案能够提高导入的成功率,且可实时获取文件的导入进度。
上面对本发明实施例中基于Excel的数据导入方法进行了描述,下面对本发明实施例中基于Excel的数据导入装置进行描述,请参阅图5,本发明实施例中基于Excel的数据导入装置一个实施例包括:
获取模块501,用于获取来自前端的数据导入请求,并提取所述数据导入请求中包含的待导入的Excel文件;
发布模块502,用于基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码;
导入模块503,用于响应于所述数据导入事件,根据预置的导入规则注解将所述Excel文件中的待导入数据添加到list集合中;
进度监控模块504,用于对所述待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据所述事件编码将所述数据导入进度返回给前端;
入库模块505,用于在所述待导入数据全部保存添加至所述list集合后,将所述list集合中的数据保存至数据库中,完成数据导入。
本发明实施例的技术方案能够提高导入的成功率,且可实时获取文件的导入进度。
请参阅图6,本发明实施例中基于Excel的数据导入装置的另一个实施例包括:
获取模块501,用于获取来自前端的数据导入请求,并提取所述数据导入请求中包含的待导入的Excel文件;
发布模块502,用于基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码;
导入模块503,用于响应于所述数据导入事件,根据预置的导入规则注解将所述Excel文件中的待导入数据添加到list集合中;
进度监控模块504,用于对所述待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据所述事件编码将所述数据导入进度返回给前端;
入库模块505,用于在所述待导入数据全部保存添加至所述list集合后,将所述list集合中的数据保存至数据库中,完成数据导入。
在本申请的另一实施例中,所述发布模块502包括:
第一对象生成单元5021,用于解析所述Excel文件得到所述Excel文件中的数据列名,并根据所述数据列名生成Visibility User对象;
第二对象生成单元5022,用于根据所述Excel文件和所述Visibility User对象生成entity对象,并生成所述entity事件的唯一编码;
事件发布单元5023,用于调用Visibility User Service对entity对象进行发布,得到数据导入事件,并将所述唯一编码保存为所述数据导入事件的事件编码。
在本申请的另一实施例中,所述导入模块503包括:
解析单元5031,用于通过Apache POI对所述Excel文件进行解析,得到sheet对象;
提取单元5032,用于提取所述sheet对象中包含的对象数据;
写入单元5033,用于基于预置的导入规则注解将所述对象数据写入到VisibilityUser对象中,得到写入完毕的Visibility User对象;
保存单元5034,用于将所述写入完毕的Visibility User对象保存至list集合中。
在本申请的另一实施例中,所述进度监控模块504包括:
线程生成单元5041,用于响应于所述数据导入事件,生成进度监控异步线程;
进度判断单元5042,用于提取所述数据导入事件中的Excel文件解析为sheet对象的解析进度,并判断是否完成解析;
进度获取单元5043,用于若是,则获取所述list集合的数据保存进度,根据所述list集合的数据保存进度计算出数据导入进度,并将所述数据导入进度写入Redis数据库中;
编码提取单元5044,用于接收进度获取接口的导入进度获取请求,并提取所述进度获取请求中包含的事件编码;
进度输出单元5045,用于根据所述事件编码在所述Redis数据库中查找最新的数据导入进度,并将所述最新的数据导入进度发送至前端。
在本申请的另一实施例中,所述进度获取单元5043具体用于:提取所述list集合中被标记为已保存至后台数据库中的数据,得到已落表数据;
计算所述已落表数据占全部数据的比例,得到落表数据比例;
根据所述落表数据比例计算出落表进度,将所述落表进度与所述解析进度相加,得到数据导入进度。
在本申请的另一实施例中,所述基于Excel的数据导入装置还包括进度展示模块,所述进度展示模块包括:
素材提取单元,用于根据所述最新的数据导入进度获取对应的进度展示素材;
进度展示单元,用于根据所述进度展示素材生成数据导入进度动图,并将所述导入进度动图显示在前端网页上。
在本申请的另一实施例中,所述基于Excel的数据导入装置还包括规则注解配置模块,所述规则注解配置模块包括:
字段提取单元,用于获取待导入的Excel文件中包含的Excel字段;
成员定义单元,用于根据所述Excel字段定义Java类以及Java类中的成员,其中,所述成员与所述Excel字段对应;
内容获取单元,用于获取待导入的Excel字段的数据列名和数据类型;
注解配置单元,用于根据所述数据列名和所述数据类型生成公用的java注解,并将所述java注解添加至对应的所述成员上。
本发明实施例中的技术方案,通过创建spring事件的功能发布数据导入异步事件以代替直接导入数据,通过spring监听器根据spring事件中包含的具体内容结合java反射机制实现数据导入,从而避免由于一次导入过多数据导致后台服务器接口超时,不清楚是否导入成功的现象;该方案能够提高导入的成功率,且可实时获取文件的导入进度。
上面图5和图6从模块化功能实体的角度对本发明实施例中的基于Excel的数据导入装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于Excel的数据导入设备进行详细描述。
图7是本发明实施例提供的一种基于Excel的数据导入设备的结构示意图,该基于Excel的数据导入设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于Excel的数据导入设备700中的一系列指令操作。更进一步地,处理器710可以设置为与存储介质730通信,在基于Excel的数据导入设备700上执行存储介质730中的一系列指令操作。
基于Excel的数据导入设备700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口760,和/或,一个或一个以上操作系统731,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图7示出的基于Excel的数据导入设备结构并不构成对基于Excel的数据导入设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机设备,该计算机设备可以是能够执行上述实施例中所述的基于Excel的数据导入方法的任何一种设备,所述计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述基于Excel的数据导入方法的步骤。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于Excel的数据导入方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于Excel的数据导入方法,其特征在于,所述基于Excel的数据导入方法包括:
获取来自前端的数据导入请求,并提取所述数据导入请求中包含的待导入的Excel文件;
基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码;
响应于所述数据导入事件,根据预置的导入规则注解将所述Excel文件中的待导入数据添加到list集合中;
对所述待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据所述事件编码将所述数据导入进度返回给前端;
在所述待导入数据全部保存添加至所述list集合后,将所述list集合中的数据保存至数据库中,完成数据导入。
2.根据权利要求1所述的基于Excel的数据导入方法,其特征在于,所述基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码:
解析所述Excel文件得到所述Excel文件中的数据列名,并根据所述数据列名生成VisibilityUser对象;
根据所述Excel文件和所述VisibilityUser对象生成entity对象,并生成所述entity事件的唯一编码;
调用VisibilityUser Service对entity对象进行发布,得到数据导入事件,并将所述唯一编码保存为所述数据导入事件的事件编码。
3.根据权利要求2所述的基于Excel的数据导入方法,其特征在于,所述根据预置的导入规则注解将所述Excel文件中的待导入数据添加到list集合中包括:
通过Apache POI对所述Excel文件进行解析,得到sheet对象;
提取所述sheet对象中包含的对象数据;
基于预置的导入规则注解将所述对象数据写入到VisibilityUser对象中,得到写入完毕的VisibilityUser对象;
将所述写入完毕的VisibilityUser对象保存至list集合中。
4.根据权利要求3所述的基于Excel的数据导入方法,其特征在于,所述对所述待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据所述事件编码将所述数据导入进度返回给前端包括:
响应于所述数据导入事件,生成进度监控异步线程;
提取所述数据导入事件中的Excel文件解析为sheet对象的解析进度,并判断是否完成解析;
若是,则获取所述list集合的数据保存进度,根据所述list集合的数据保存进度计算出数据导入进度,并将所述数据导入进度写入Redis数据库中;
接收进度获取接口的导入进度获取请求,并提取所述进度获取请求中包含的事件编码;
根据所述事件编码在所述Redis数据库中查找最新的数据导入进度,并将所述最新的数据导入进度发送至前端。
5.根据权利要求4所述的基于Excel的数据导入方法,其特征在于,所述获取所述list集合的数据保存进度,根据所述list集合的数据保存进度计算出数据导入进度,并将所述数据导入进度写入Redis数据库中包括:
提取所述list集合中被标记为已保存至后台数据库中的数据,得到已落表数据;
计算所述已落表数据占全部数据的比例,得到落表数据比例;
根据所述落表数据比例计算出落表进度,将所述落表进度与所述解析进度相加,得到数据导入进度。
6.根据权利要求5所述的基于Excel的数据导入方法,其特征在于,所述将所述最新的数据导入进度发送至前端还包括:
根据所述最新的数据导入进度获取对应的进度展示素材;
根据所述进度展示素材生成数据导入进度动图,并将所述导入进度动图显示在前端网页上。
7.根据权利要求1-6中任一项所述的基于Excel的数据导入方法,其特征在于,在所述获取来自前端的数据导入请求之前,还包括:
获取待导入的Excel文件中包含的Excel字段;
根据所述Excel字段定义Java类以及Java类中的成员,其中,所述成员与所述Excel字段对应;
获取待导入的Excel字段的数据列名和数据类型;
根据所述数据列名和所述数据类型生成公用的java注解,并将所述java注解添加至对应的所述成员上。
8.一种基于Excel的数据导入装置,其特征在于,所述基于Excel的数据导入装置包括:
获取模块,用于获取来自前端的数据导入请求,并提取所述数据导入请求中包含的待导入的Excel文件;
发布模块,用于基于所述Excel文件创建并发布数据导入事件,并生成所述数据导入事件的事件编码;
导入模块,用于响应于所述数据导入事件,根据预置的导入规则注解将所述Excel文件中的待导入数据添加到list集合中;
进度监控模块,用于对所述待导入数据添加到list集合中的添加进度进行监控,得到数据导入进度,并根据所述事件编码将所述数据导入进度返回给前端;
入库模块,用于在所述待导入数据全部保存添加至所述list集合后,将所述list集合中的数据保存至数据库中,完成数据导入。
9.一种基于Excel的数据导入设备,其特征在于,所述基于Excel的数据导入设备包括:存储器和至少一个处理器,所述存储器中存储有指令;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于Excel的数据导入设备执行如权利要求1-7中任一项所述的基于Excel的数据导入方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-7中任一项所述基于Excel的数据导入方法的步骤。
CN202111151147.7A 2021-09-29 2021-09-29 基于Excel的数据导入方法、装置、设备及存储介质 Active CN113836213B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111151147.7A CN113836213B (zh) 2021-09-29 2021-09-29 基于Excel的数据导入方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111151147.7A CN113836213B (zh) 2021-09-29 2021-09-29 基于Excel的数据导入方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113836213A true CN113836213A (zh) 2021-12-24
CN113836213B CN113836213B (zh) 2024-02-09

Family

ID=78967271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111151147.7A Active CN113836213B (zh) 2021-09-29 2021-09-29 基于Excel的数据导入方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113836213B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609483A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种基于配置方式的Excel通用导入方法
CN110147402A (zh) * 2019-05-22 2019-08-20 北大方正集团有限公司 Excel文件导入方法及设备、导出方法及设备
CN110765741A (zh) * 2019-09-09 2020-02-07 重庆金融资产交易所有限责任公司 数据处理的方法、装置、计算机设备和存储介质
CN113239106A (zh) * 2021-06-04 2021-08-10 平安科技(深圳)有限公司 Excel文件导出方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609483A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种基于配置方式的Excel通用导入方法
CN110147402A (zh) * 2019-05-22 2019-08-20 北大方正集团有限公司 Excel文件导入方法及设备、导出方法及设备
CN110765741A (zh) * 2019-09-09 2020-02-07 重庆金融资产交易所有限责任公司 数据处理的方法、装置、计算机设备和存储介质
CN113239106A (zh) * 2021-06-04 2021-08-10 平安科技(深圳)有限公司 Excel文件导出方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN113836213B (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
US8959122B2 (en) Data processing device
CN110292775B (zh) 获取差异数据的方法及装置
US9329751B2 (en) Method and a system to generate a user interface for analytical models
CN102073726A (zh) 搜索引擎系统及该搜索引擎系统的结构化数据引入方法
CN102073725A (zh) 结构化数据的搜索方法和实现该搜索方法的搜索引擎系统
JPH11296541A (ja) 構造化データ管理システム及び構造化データ管理プログラムを記録したコンピュータ読み取り可能な記録媒体
WO2008042784A2 (en) Comparing taxonomies
CN111310232A (zh) 数据脱敏方法及装置、电子设备、存储介质
CN112347748A (zh) 数据报表的生成方法、装置、计算机设备及可读存储介质
CN111679851A (zh) 需求代码管理方法、装置、系统与计算机可读存储介质
CN113886204A (zh) 用户行为数据收集方法、装置、电子设备及可读存储介质
CN113836213A (zh) 基于Excel的数据导入方法、装置、设备及存储介质
CN112527609B (zh) 预警信息推送方法、装置、电子设备及存储介质
CN114625743A (zh) 一种人事主数据的数据更新方法、装置及电子设备
CN114169306A (zh) 一种生成电子回执单的方法、装置、设备及可读存储介质
CN110879871B (zh) 页面菜单的配置方法及装置
CN110716994B (zh) 一种支持异构地理数据资源检索的检索方法及装置
WO2021234019A1 (en) Database management methods and associated apparatus
JP2019095958A (ja) 市況コメント生成支援装置および市況コメント生成支援方法
CN115017175B (zh) 一种面向教学的多用户数据处理方法和系统
CN114385640A (zh) 业务数据处理方法、系统、计算机设备及存储介质
Acharya Online car servicing system project report.
CN113157822A (zh) 页面展示方法及规则校验引擎
CN115237411A (zh) 一种前端页面修改方法、装置及设备
CN115544056A (zh) 绩效数据获取方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant