CN110134398A - 表格数据的解析方法、***及设备 - Google Patents
表格数据的解析方法、***及设备 Download PDFInfo
- Publication number
- CN110134398A CN110134398A CN201810108204.5A CN201810108204A CN110134398A CN 110134398 A CN110134398 A CN 110134398A CN 201810108204 A CN201810108204 A CN 201810108204A CN 110134398 A CN110134398 A CN 110134398A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- analyzing
- file
- row
- 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.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 104
- 238000000034 method Methods 0.000 claims description 93
- 230000006870 function Effects 0.000 claims description 51
- 238000013507 mapping Methods 0.000 claims description 46
- 238000007405 data analysis Methods 0.000 claims description 35
- 238000006243 chemical reaction Methods 0.000 claims description 28
- 230000001960 triggered effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 26
- 238000004590 computer program Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4432—Reducing the energy consumption
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种表格数据的解析方法、***及设备。其中,所述方法包括:对表格文件中的行数据进行解析;所述行数据解析完成时,释放解析所述行数据所占用的内存资源;利用空出的内存资源解析所述表格文件中的后续行数据。本申请实施例提供的技术方案,在行数据解析完成时即释放解析行数据所占用的内存资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的表格文件,也不易出现内存溢出的情况。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种表格数据的解析方法、***及设备。
背景技术
在Java web***开发中,为了提升使用者工作效率,经常会提供数据的批量上传,批量下载功能。Excel(微软公司的办公软件Microsoft office的组件之一)作为一款优秀的办公软件,使用非常广泛,大家都希望数据能够以Excel的方式上传和导出。开源解决方案有Apache poi(Apache软件基金会的开放源码函式库)、jxl(动态读写Excel文件的开源框架),通过Workbook(工作表),Sheet(表格),Cell(单元格)这三个对象就可以实现Excel文件的读写工作。
但这些方案都存在着内存、CPU消耗巨大问题,在大并发情况下,服务器压力巨大。
发明内容
鉴于上述问题,提出了本申请以便解决上述问题或至少部分地解决上述问题的表格数据的解析方法、***及设备。
于是,在本发明的一个实施例中,提供了一种表格数据的解析方法。该方法,包括:
对表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据。
在本申请的另一实施例中,提供了一种表格数据的解析方法。该方法,适用于服务端,包括:
接收客户端上传的表格文件;
对所述表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端。
在本申请的又一实施例中,提供了一种表格数据的解析方法。该方法,适用于客户端,包括:
向服务端上传表格文件;
接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果;
其中,所述表格文件中一行数据对应的解析结果是对所述行数据进行解析得到的;所述行数数据解析完成时,所述服务端会释放解析所述行数据所占用的内存资源以利用空出的内存资源解析所述表格文件中的后续行数据。
在本申请的一实施例中,提供了一种表格数据的解析***。该***包括:
服务端,用于接收客户端上传的表格文件;对所述表格文件中的行数据进行解析;所述行数据解析完成时,释放解析所述行数据所占用的内存资源;利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端;
客户端,用于向服务端上传表格文件;接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果。
在本申请的一实施例中,提供了一种电子设备。该电子设备包括:第一存储器和第一处理器;其中,
所述第一存储器,用于存储程序;
所述第一处理器,与所述第一存储器耦合,用于执行所述第一存储器中存储的所述程序,以用于:
对表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据。
在本申请的一实施例中,提供了一种服务端设备。该服务端设备包括:第二存储器和第二处理器;其中,
所述第二存储器,用于存储程序;
所述第二处理器,与所述第二存储器耦合,用于执行所述第二存储器中存储的所述程序,以用于:
接收客户端上传的表格文件;
对所述表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端。
在本申请的一实施例中,提供了一种客户端设备。该客户端设备包括:第三存储器和第三处理器;其中,
所述第三存储器,用于存储程序;
所述第三处理器,与所述第三存储器耦合,用于执行所述第三存储器中存储的所述程序,以用于:
向服务端上传表格文件;
接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果;
其中,所述表格文件中一行数据对应的解析结果是对所述行数据进行解析得到的;所述行数数据解析完成时,所述服务端会释放解析所述行数据所占用的内存资源以利用空出的内存资源解析所述表格文件中的后续行数据。
本申请实施例提供的技术方案,在行数据解析完成时即释放解析该行数据所占用的内存资源,可为解析后续行数据空出内存资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的表格文件,也不易出现内存溢出的情况。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一实施例提供的表格数据的解析方法的流程示意图;
图2为本申请实施例提供的两种行数据解析方式的对比图;
图3为本申请另一实施例提供的表格数据的解析方法的流程示意图;
图4为本申请实施例提供的表格数据的解析方法采用观察者模式实现的理论架构示意图;
图5为本申请一实施例提供的表格数据的解析***的流程示意图;
图6为本申请又一实施例提供的表格数据的解析***的流程示意图;
图7为本申请又一实施例提供的表格数据的解析***的流程示意图;
图8为本申请又一实施例提供的表格数据的解析***的流程示意图;
图9为本申请一实施例提供的表格数据的解析装置的结构示意图;
图10为本申请另一实施例提供的表格数据的解析装置的结构示意图;
图11为本申请又一实施例提供的表格数据的解析装置的结构示意图;
图12为本申请一实施例提供的电子设备的结构示意图;
图13为本申请一实施例提供的服务端设备的结构示意图;
图14为本申请一实施例提供的客户端设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了根据特定顺序出现的多个操作,这些操作可以不根据其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
现有开源解决方案解析excel文件时,先将excel文件中的所有cell(单元格)读入内存,生成一个树的结构。将excel文件一次性读到内存,解析时内存中会暂存大量的临时变量,这些临时变量又以强引用的方式循环依赖,导致解析过程中无法清除垃圾数据。数据量比较大时,极易产生java.lang.OutOfMemoryError:Java heap space错误。这个错误明显就是内存溢出(即内存不足),虽然可以通过调整JVM堆区域内存大小来解决,但是一定的内存只能解决一定的数据量。
为此,本申请提供了一种表格数据的解析方法、***及设备,以解决现有技术中存在的内存易溢出问题。本申请实施例提供的技术方案的设计思想可简单的理解为:限制一次解析的数据量,解析完即释放所占用的内存资源,再次读入后续数据如此下去直至表格文件(如excel文件)中的所有数据均被解析出。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示出了本申请一实施例提供的表格数据的解析方法的流程示意图。如图1所示,所述表格数据的解析方法包括:
101、对表格文件中的行数据进行解析。
102、所述行数据解析完成时,释放解析所述行数据所占用的内存资源。
103、利用空出的内存资源解析所述表格文件中的后续行数据。
这里需要说明的是:本申请各实施例中的行数据也可替换为列数据,本申请实施例逐行解析或逐列解析均可,此处不作具体限定。
上述101中,表格文件可以是excel文件或WPS(Word Processing System,文字处理***)文件等,本申请实施例对此不作具体限定。其中,表格文件可被全部读入内存,而在解析时再逐行或选择部分行进行解析;或者,表格文件存在磁盘(如外设设备、本地硬盘等)中,每次读取内存中的行数据可以是一行、两行或三行等,在内存中对读取的行数据进行解析。即本实施例步骤101可采用如下方法实现:
将所述表格文件读入内存,在内存中对所述表格文件中的行数据进行解析;或者
从所述表格文件所在的存储区域读取所述行数据至内存,在内存中对所述行数据进行解析。
图2示出了上述两种方式的对比图。参见图2,方式一将表格文件读入内存,在内存中对表格文件中的部分行数据(如一行或两行)进行解析。方式二从磁盘中读取表格文件中的行数据(如一行或两行数据),在内存中对读入的行数据进行解析。较方式一这种将表格文件全部读入内存,方式二中表格文件存储在磁盘中内存中仅有读入表格文件中的部分行数据,其内存开销更小。
在一种可实现的技术方案中,内存每次解析的行数据的行数可限制为一行数据,解析完一行数据就释放该行数据所占用的内存资源,再读入表格文件中的另一未解析行数据,如此继续直至表格文件中的所有行数据顺次被解析;这样就可以保证内存中只有一行数据在解析,进而不会出现内存溢出的问题了。
在另一种可实现的技术方案中,内存中每次解析的行数据可由内存当前的空闲容量来确定。即本申请实施例提供的技术方案还可包括如下步骤:
基于内存的空闲容量,确定一次解析行数据的行数。
相应的,上述步骤101可具体为:对所述表格文件中的所述行数的行数据进行解析。
实际实施时,内存当前的空闲容量越大,一次在内存中进行解析的行数据的行数就可多一些;内存当前的空闲容量越小,一次在内存中进行解析的行数据的行数就可以控制的少一些。其中,内存的空闲容量与行数的关系可预先设定;这样在基于内存的空闲容量确定行数时,可通过查询阈值的空闲容量与行数的对应关系,确定出内存一次能解析行数据的行数。这里需要说明的是:上述内存的空闲容量与行数的关系可基于理论测算或实际测试得出,本申请实施例对此不作具体限定。
本实施例在具体实施时,可采用现有的开源框架模型,如Apache poi,对表格文件的行数据进行解析。即上述101对表格文件中的行数据进行解析,包括:
调用开源框架模型,对所述行数据进行解析。
例如,所述表格文件为xlsx存储格式的excel文件时,上述开源框架模型可具体为Apache poi的事件驱动模型。相应的,所述调用开源框架模型,对所述行数据进行解析,可具体为:
调用Apache poi的事件驱动模型,解析所述行数据的xml文件。
这里需要补充的是:现有excel文件有两种存储格式:
格式一、xls是Microsoft Excel2007前excel的文件存储格式,实现原理是基于微软的ole db是微软com组件的一种实现,本质上也是一个微型数据库,由于微软的东西很多不开源,另外也已经被淘汰,了解它的细节意义不大,底层的编程都是基于微软的com组件去开发的。
格式二、xlsx是Microsoft Excel2007后excel的文件存储格式,实现是基于openXml和zip技术。这种存储简单,安全传输方便,同时处理数据也变的简单。
目前,excel文件大多为上述格式二的xlsx存储格式的文件。拿excel2007(即xlsx格式文件)来说,其内容采用XML的格式来存储,所以处理excel就是解析xml。Apache poi的事件驱动模型解析XML的API是SAX(Simple API for XML),这种模型在读取xml文档时,并没有将整个excel文件读入内存,而是按顺序顺次读取数据并解析。因此,这种方式对***资源要求不高,可以处理海量数据。
上述102中,内存资源可通过调用垃圾收集器GC来回收。即上述步骤103可具体为:调用垃圾收集器GC回收解析所述行数据所占用的内存资源。
GC(Garbage Collection):JAVA/.NET中的垃圾收集器。当Java虚拟机(JVM)或.NETCLR发觉内存资源紧张的时候,就会自动地去清理无用对象(没有被应用到的对象)所占用的内存资源。Java提供的GC功能可以自动检测对象是否超过了作用域,从而达到自动回收内存的目的。JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收:一个是当应用程序线程空闲时;另一个是Java内存堆不足时,会不断调用GC。
上述步骤101中在解析行数据过程中会产生临时变量或对象,在行数据解析完成后这些临时变量和对象即不会被应用,因此可调用GC回收这些无用变量或对象所占用的内存资源,以为解析后续行数据空出内存资源。
上述103中,空出内存资源后,可利用空出的内存资源继续对表格文件中剩余未解析的行数据进行解析。由上述内容可知,在内存中解析的行数据可以是一行,或者根据空出内存资源的容量,确定在内存一次解析的行数据的行数,然后对所述行数的行数据进行解析。不断循环直至将表格文件中的所有行数据解析完。
本申请实施例提供的技术方案,在行数据解析完成时即释放解析该行数据所占用的内存资源,可为解析后续行数据空出内存资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的表格文件,也不易出现内存溢出的情况。
解析行数据得到解析结果中除了包含有单元格内的数据外,还包含有很多业务无关数据,如excel各行的高度、宽度、字体类型、颜色等等;这些业务无用数据非常占用内存资源。由此,本申请实施例提供的所述方法还可包括抛弃解析结果中业务无关数据的步骤。具体的,本申请实施例提供的方法还包括如下步骤:
104、抛弃解析所述行数据得到的解析结果中的业务无关数据。
在一种可实现的技术方案中,上述104可采用如下方法实现:
1041、获取所述excel文件对应的映射模型。
1042、抛弃所述解析结果中未映射到所述映射模型的数据。
其中,上述每一个表格文件可有一个相应的映射模型,映射模型可预先设定好。对于xlsx存储格式的excel文件来说,读入内存的行数据在内存中可转换为xml格式数据,xml格式数据的标签就可以识别是格式、标题、类型、还是内容。一种可实现的方式是,映射模型中包含有与业务相关的标签;解析结果中未映射在所述映射模型中的标签对应的数据即为要抛弃的数据。例如,映射模型中包含有与业务相关的标签{A,B};解析结果中包含有{(A,a);(B,b);(C,b)};解析结果中未映射在所述映射模型中的标签为C,则标签C对应的数据b即为要抛弃的数据。
这里需要说明的是:不同应用领域中,上述业务无关数据会不同。相应的,行数据对应的业务相关结果中包含的业务相关数据类型也会不同。本申请各实施例中提及的映射模型可通过注解的方式实现。
解析结果中包含的业务无关数据,如行高度、宽度、字体类型、颜色等,占用了大量内存资源,通过抛弃解析结果中的业务无关数据,能大大降低内存的消耗。
在实际应用中,发明人发现选用现有开源框架模型,如Apache poi的事件驱动模型解析excel文件,解析出的日期类型结果是一个double类型的数据,无法与Java中日期类型转换。由此,本申请实施例提供的方法还可包括如下步骤:
105、解析所述行数据得到的解析结果中包含有日期类型数据时,调用自定义转换函数。
一种可实现的示例,自定义转换函数如下:
ExcelProperty(value=”startTime,format=“yyyy-MM-dd HH:mm:ss”)
Private Date startTime
106、将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
图3示出了本申请另一实施例提供的表格数据的解析方法的流程示意图。如图3所示,本实施例提供的所述方法的执行主体可以是安装在设备(如客户端或服务端)上的解析软件。该解析软件可采用观察者模式实现,以实现解耦便于后续软件的进一步的开发。该观察者模式中包含有:发布方、调度方及第一订阅方,如图4所示。
201、发布方对excel文件中的行数据进行解析,并将解析结果发布至调度方。
202、调度方判断发布方在所述行数据解析完成后发布的所述解析结果是否需要模型映射。
203、需要模型映射时,调度方将所述解析结果发送至执行模型映射的第一订阅方。
204、第一订阅方基于本地映射模型,抛弃所述解析结果中未映射到所述映射模型的数据,得到所述行数据对应的业务相关结果。
205、调度方接收第一订阅方反馈的所述行数据对应的业务相关结果。
观察者模式是一种软件设计方式,上述201中发布方如何解析和204中第一订阅方如何抛弃数据的实现同上述实施例,具体内容可参见上述实施例中的相应内容,此次不再赘述。
具体实施时,上述202和203中,调度方中可添加一个缓存列表,用于存放回调函数以便通知订阅者。调度方在接收解析结果后,可根据解析结果中携带的参数(如表格文件的标识)遍历这个缓存列表,以查找到对应的回调函数。若查找到回调函数,则说明需要模型映射,触发回调函数即可将解析结果发送至该回调函数指向的第一订阅方。
观察者模型又叫做发布-订阅模型,本实施例提供的观察者模式定义了一种一对多的依赖关系,还在发布方与订阅方之间增设的调度方,由调度方决定将发布方发布的解析结果通知给哪个订阅方。本实施例采用图4所示结构的观察者模型实现,目的是解析excel文件中的一行生成一个消息,然后通知调度方发送至特定的订阅方处理(即抛弃业务无关数据),处理完之后再解析下一行。通过这样的设计可以避免一次将一个excel文件解析完导致内存溢出的问题。
进一步的,如图4所示,本申请实施例中观察者模式中还可包含有:第二订阅方。以及,所述方法,还包括:
206、调度方将所述行数据对应的业务相关结果发送至第二订阅方,以由所述第二订阅方作进一步的处理或转发。
进一步的,上述实施例提供的所述方法,还可包括:
207、若调度方判断该解析结果无需模型映射时,调度方将所述解析结果发送至所述第二订阅方,以由所述第二订阅方作进一步处理或转发。
第二订阅方对接收到的数据作何种处理或转发至谁,可根据实际的业务需求人为设定,本申请实施例对此不作具体限定。例如,第二订阅方对接收到业务相关结果或解析结果中包含的日期类型数据进行处理,如:
第二订阅方调用自定义转换函数,将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给java程序对Microsoft Office格式档案读和写的功能。在本实施例中使用过Apache POI技术解析excel文件。为了简化本实施例提供的技术方案的实现难度,本申请实施例提供的技术方案可通过在Apache POI基础上作封装和完善来实现。
例如,原技术方案需要至少200行以上代码完成一个表格文件的解析,本申请实施例在现有Apache POI基础上,只需要几行代码即可完成封装:
ExcelListener Listener=new Excel Listener();
new ExcelReader(new AnalysisParam(inputStream,ExcelTypeEnum.XLS,customContent:null),Listener).read();
完善可通过上述封装代码的中间或最后,添加自定义转换函数来实现:
ExcelProperty(value=”startTime,format=“yyyy-MM-dd HH:mm:ss”)
Private Date startTime
以完善现有技术Apache POI解析出的日期类型结果是一个double类型的数据,无法与Java中日期类型转换的问题。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤103的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
上述实施例中的表格文件可以是用户通过客户端上传到服务端中的,也可以是服务端中已预先保存的文件。用户通过客户端上传服务端,由服务端来解析表格文件,这样客户端无需具有较高的硬件配置,任何有表格文件解析需求的用户均可通过各自使用的客户端(如手机或台式机)向服务端发起服务请求。由此,本申请一实施例还提供了一种表格数据的解析***。如图5所示,表格数据的解析***包括:服务端301和客户端302。其中,
服务端301,用于接收客户端上传的表格文件;对所述表格文件中的行数据进行解析;所述行数据解析完成时,释放解析所述行数据所占用的内存资源;利用空出的内存资源解析所述表格文件中的后续行数据,待得到所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端;
客户端302,用于向服务端上传表格文件;接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果。
本申请实施例提供的技术方案,在行数据解析完成时即释放解析该行数据所占用的内存资源,可为解析后续行数据空出内存资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的表格文件,也不易出现内存溢出的情况。
本申请以下实施例分别从服务端、客户端的角度给出了几种表格数据的解析方法的流程。
从服务端的角度来看,一种表格数据的解析方法的流程示意图,如图6所示,所述方法包括:
401、接收客户端上传的表格文件。
402、对所述表格文件中的行数据进行解析。
403、所述行数据解析完成时,释放解析所述行数据所占用的内存资源。
404、利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端。
其中,上述402~404可具体参见上述各实施例中的相应内容,此处不再赘述。
上述404中,服务端在得到表格文件的所有行数据各自对应的解析结果后,再将表格文件所有行数据各自对应的解析结果反馈至客户端。实质上,在具体实施时,服务端也可在得到一行数据对应的解析结果后,即将该行数据对应的解析结果反馈至客户端;或者服务端还可分多次将excel文件所有行数据各自对应的解析结果反馈至客户端等等,本申请实施例对此不作具体限定。
本申请实施例提供的技术方案,在行数据解析完成时即释放解析该行数据所占用的内存资源,可为解析后续行数据空出内存资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的表格文件,也不易出现内存溢出的情况。
进一步的,服务端可配置有观察者模式的解析软件。具体的,该观察者模式的解析软件的具体实现流程及逻辑架构可参见上述图3和图4所示实施例中所述的内容,此处不再赘述。这里需要补充的是:本实施例中向客户端反馈表格文件中所有行数据各自对应的解析结果可由第二订阅方实现。即上述步骤404中,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端,包括:
所述第二订阅方在接收到所述表格文件中所有行数据各自对应的业务相关结果后,将所述表格文件中所有行数据各自对应的业务相关结果反馈至所述客户端。
同上述各实施例,本实施例提供的所述方法还可包括:
405、解析所述行数据得到的解析结果中包含有日期类型数据时,调用自定义转换函数。
406、将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
这里需要补充的是:当本实施例提供的表格数据的解析方法采用观察者模式时,上述405和406可由第二订阅者来实现。
从客户端的角度来看,一种表格数据的解析方法的流程示意图。如图7所示,所述方法适用于客户端。所述方法包括:
501、向服务端上传表格文件。
502、接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果。
其中,所述表格文件中一行数据对应的解析结果是对所述行数据进行解析得的;所述行数数据解析完成时,所述服务端会释放解析所述行数据所占用的内存资源以利用空出的内存资源解析所述表格文件中的后续行数据。
上述501中,上传的表格文件可具体采用如下方法实现:显示上传界面;响应于用户通过所述上传界面触发的表格文件选择事件,获取所述选择事件指向的所述表格文件。
其中,所述选择事件可以是用户通过所述上传界面上的下拉菜单中显示的多个候选表格文件中选择出的,或是通过选项控键从客户端本地中选出的表格文件,或是通过语音方式触发的等等,本申请实施例对此不作具体限定。所述表格文件可以是excel文件或wps文件等等。
本申请实施例提供的技术方案,在行数据解析完成时即释放解析该行数据所占用的内存资源,可为解析后续行数据空出内存资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的表格文件,也不易出现内存溢出的情况。
图8示出了本申请又一实施例提供的表格数据的解析方法的流程示意图。本实施例以excel文件为例对本申请提供的技术方案进行说明。如图8所示,所述方法包括:
601、客户端上传excel文件。
602、服务端接收到excel文件后,将excel文件中的一行数据读入内存。
603、服务端对行数据进行解析得到解析结果。
604、服务端抛弃解析结果中的业务无关数据,得到行数据对应的业务相关结果。
605、服务端释放解析行数据所占用的内存资源。
606、服务端判断所述行数据是否为所述excel文件的最末行数据,若否,则将excel文件中的下一行数据读入内存,返回步骤603;若是,将得到的所述excel文件中所有行数据各自对应的业务相关结果反馈至所述客户端。
上述601~606可具体参见上述各实施例中的相应内容,此处不再赘述。
本申请实施例提供的技术方案中,解析结果中大多包含有业务无关数据,这些业务无关数据(如行高度、宽度、字体类型、颜色等)占用了大量内存资源,通过抛弃解析结果中的业务无关数据,能大大降低内存的消耗;另外,及时的释放解析行数据所占用的内存资源,可为解析后续行数据空出资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的excel文件,也不易出现内存溢出的情况。
图9示出了本申请一实施例提供的表格数据的解析装置的结构示意图。如图9所示,本实施例提供的所述表格数据的解析装置包括:
解析模块701,用于对表格文件中的行数据进行解析;
释放模块702,用于释放解析所述行数据所占用的内存资源。
所述解析模块701还用于利用空出的内存资源解析所述表格文件中的后续行数据。
进一步的,所述解析模块701还用于:
将所述表格文件读入内存,在内存中对所述表格文件中的行数据进行解析;或者
从所述表格文件所在的存储区域读取所述行数据至内存,在内存中对所述行数据进行解析。
进一步的,本申请实施例提供的表格数据的解析装置还包括:
确定模块,用于基于内存的空闲容量,确定一次解析行数据的行数;
相应的,所述解析模块701还用于:对所述表格文件中的所述行数的行数据进行解析。
进一步的,所述解析模块还用于:调用开源框架模型,对所述行数据进行解析。
进一步的,所述表格文件为xlsx存储格式的excel文件。相应的,上述解析模块701,还用于调用Apache poi的事件驱动模型,解析所述行数据的xml文件。
进一步的,本申请实施例提供的表格数据的解析装置还包括:抛弃模块。该抛弃模块用于抛弃解析所述行数据得到的解析结果中的业务无关数据。更具体的,所述抛弃模块,还用于获取所述表格文件对应的映射模型;抛弃所述解析结果中未映射到所述映射模型的数据。
进一步的,所述释放模块703还用于调用垃圾收集器GC回收解析所述行数据所占用的内存资源。
进一步的,所述装置,还包括:
调用模块,用于解析所述行数据得到的解析结果中包含有日期类型数据时,调用自定义转换函数;
执行模块,用于将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
这里需要说明的是:上述实施例提供的表格数据的解析装置可实现上述图1所示方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述相应方法实施例中的相应内容,此处不再赘述。
本申请实施例提供的技术方案,在行数据解析完成后即释放解析行数据所占用的内存资源,可为解析后续行数据空出内存资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的表格文件,也不易出现内存溢出的情况。
上述实施例提供的所述表格数据的解析装置也可采用图4所示的观察者模式实现。该表格数据的解析装置可包括:发布方213、调度方212及第一订阅方210。其中,
发布方213,用于对表格文件中的行数据进行解析,并将解析结果发布至调度方212。
调度方212,用于判断发布方213发布的所述解析结果是否需要模型映射;需要模型映射时,调度方将所述解析结果发送至执行模型映射的第一订阅方210。
第一订阅方210,用于基于本地映射模型,抛弃所述解析结果中未映射到所述映射模型的数据,得到所述行数据对应的业务相关结果。
调度方212,还用于接收第一订阅方210反馈的所述行数据对应的业务相关结果。
进一步的,如图4所示,所述表格数据的解析装置还可包含:第二订阅方211。相应的,
调度方212,还用于将所述行数据对应的业务相关结果发送至所述第二订阅方211;
所述第二订阅方211,用于对接收到业务相关结果进一步处理或转发。
进一步的,所述调度方212,还可用于无需模型映射时,将所述解析结果发送至所述第二订阅方211,以由所述第二订阅方211作进一步处理或转发。
进一步的,所述第二订阅方211还可用于所述行数据对应的业务相关结果中包含有日期类型数据时,调用自定义转换函数;将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
图10示出了本申请一实施例提供的表格数据的解析装置的结构示意图。如图10所示,本实施例提供的所述装置包括:
接收模块801,用于接收客户端上传的表格文件;
解析模块802,用于对所述表格文件中的行数据进行解析;
释放模块803,用于在所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
所述解析模块802,还用于利用空出的内存资源解析所述表格文件中的后续行数据;
反馈模块804,用于待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端。
进一步的,所述解析模块802还用于将所述表格文件读入内存,在内存中对所述表格文件中的行数据进行解析;或者
从所述表格文件所在的存储区域读取所述行数据至内存,在内存中对所述行数据进行解析。
进一步的,本申请实施例提供的表格数据的解析装置还包括:
确定模块,用于基于内存的空闲容量,确定一次解析行数据的行数。
相应的,所述解析模块802还用于对所述表格文件中的所述行数的行数据进行解析。
进一步的,所述解析模块802还用于:调用开源框架模型,对所述行数据进行解析。更具体的,所述表格文件为xlsx存储格式的excel文件;上述解析模块802还用于调用Apache poi的事件驱动模型,解析所述行数据的xml文件。
进一步的,本申请实施例提供的表格数据的解析装置还包括:抛弃模块,用于抛弃解析所述行数据得到的解析结果中的业务无关数据。更具的,所述抛弃模块还用于:获取所述表格文件对应的映射模型;抛弃所述解析结果中未映射到所述映射模型的数据。
进一步的,所述释放模块803还用于调用垃圾收集器GC回收解析所述行数据所占用的内存资源。
进一步的,所述表格数据的解析装置还可包括:
调用模块,用于解析所述行数据得到的解析结果中包含有日期类型数据时,调用自定义转换函数;
执行模块,用于将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
同样的,上述表格数据的解析装置也可采用图4所示的观察者模式实现。该表格数据的解析装置可包括:发布方213、调度方212、第一订阅方210和第二订阅方211。其中,
发布方213,用于接收客户端上传的表格文件,对表格文件中的行数据进行解析,并将解析结果发布至调度方212。
调度方212,用于判断发布方213发布的所述解析结果是否需要模型映射;需要模型映射时,调度方将所述解析结果发送至执行模型映射的第一订阅方210。
第一订阅方210,用于基于本地映射模型,抛弃所述解析结果中未映射到所述映射模型的数据,得到所述行数据对应的业务相关结果。
调度方212,还用于接收第一订阅方210反馈的所述行数据对应的业务相关结果,将所述行数据对应的业务相关结果转发至第二订阅方211。
第二订阅方211,用于在接收到所述excel文件中所有行数据各自对应的业务相关结果后,将所述excel文件中所有行数据各自对应的业务相关结果反馈至所述客户端。
进一步的,所述第二订阅方211还可用于所述行数据对应的业务相关结果中包含有日期类型数据时,调用自定义转换函数;将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
图11示出了本申请一实施例提供的表格数据的解析装置的结构示意图。如图11所示,所述装置包括:
上传模块1201,用于向服务端上传表格文件;
接收模块1202,用于接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果;
其中,所述表格文件中一行数据对应的解析结果是对所述行数据进行解析得到的;所述行数数据解析完成时,所述服务端会释放解析所述行数据所占用的内存资源以利用空出的内存资源解析所述表格文件中的后续行数据。
进一步的,所述装置还可包括:
显示模块,用于显示上传界面;
获取模块,用于响应于用户通过所述上传界面触发的excel文件选择事件,获取所述选择事件指向的所述excel文件。
这里需要说明的是:上述实施例提供的表格数据的解析装置可实现上述图7所示方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述相应方法实施例中的相应内容,此处不再赘述。
本申请实施例提供的技术方案中,解析结果中大多包含有业务无关数据,这些业务无关数据(如行高度、宽度、字体类型、颜色等)占用了大量内存资源,通过抛弃解析结果中的业务无关数据,能大大降低内存的消耗;另外,及时的释放解析行数据所占用的内存资源,可为解析后续行数据空出资源,有助于将内存占用比维持在一个较低的水平,即使解析任意大的excel文件,也不易出现内存溢出的情况。
图12示出了本申请一实施例提供的电子设备的结构示意图。如图12所示,所述电子设备包括:第一存储器901和第一处理器902,其中,
所述第一存储器901,用于存储程序;
所述第一处理器902,与所述第一存储器901耦合,用于执行所述第一存储器901中存储的所述程序,以用于:
对表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据。
上述第一存储器901可被配置为存储其它各种数据以支持在云端设备上的操作。这些数据的示例包括用于在云端设备上操作的任何应用程序或方法的指令。第一存储器901可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
上述第一处理器902在执行第一存储器901中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。
进一步,如图12所示,电子设备还包括:第一通信组件903、第一显示器904、第一电源组件905、第一音频组件906等其它组件。图12中仅示意性给出部分组件,并不意味着电子设备只包括图12所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的表格数据的解析方法步骤或功能。
图13示出了本申请一实施例提供的服务端设备的结构示意图。如图13所示,所述服务端设备包括:第二存储器1001和第二处理器1002,其中,
所述第二存储器1001,用于存储程序;
所述第二处理器1002,与所述第二存储器1001耦合,用于执行所述第二存储器1001中存储的所述程序,以用于:
接收客户端上传的表格文件;
对所述表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端。
上述第二存储器1001可被配置为存储其它各种数据以支持在云端设备上的操作。这些数据的示例包括用于在云端设备上操作的任何应用程序或方法的指令。第二存储器1001可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
上述第二处理器1002在执行第二存储器1001中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。
进一步,如图13所示,服务端设备还包括:第二通信组件1003、第二显示器1004、第二电源组件1005、第二音频组件1006等其它组件。图13中仅示意性给出部分组件,并不意味着服务端设备只包括图13所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的表格数据的解析方法步骤或功能。
图14示出了本申请一实施例提供的客户端设备的结构示意图。如图14所示,所述客户端设备包括:第三存储器1101和第三处理器1102,其中,
所述第三存储器1101,用于存储程序;
所述第三处理器1102,与所述第三存储器1101耦合,用于执行所述第三存储器1101中存储的所述程序,以用于:
向服务端上传表格文件;
接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果;
其中,所述表格文件中一行数据对应的解析结果是对所述行数据进行解析得到的;所述行数数据解析完成时,所述服务端会释放解析所述行数据所占用的内存资源以利用空出的内存资源解析所述表格文件中的后续行数据。
上述第三存储器1101可被配置为存储其它各种数据以支持在云端设备上的操作。这些数据的示例包括用于在云端设备上操作的任何应用程序或方法的指令。第三存储器1101可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
上述第三处理器1102在执行第三存储器1101中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。
进一步,如图14所示,客户端设备还包括:第三通信组件1103、第三显示器1104、第三电源组件1105、第三音频组件1106等其它组件。图14中仅示意性给出部分组件,并不意味着客户端设备只包括图14所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的表格数据的解析方法步骤或功能。
在图12、图13和图14中的显示器,可以包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
在图12、图13和图14中的电源组件,为电源组件所属设备的各种组件提供电力。电源组件可以包括电源管理***,一个或多个电源,及其他与为电源组件所属设备生成、管理和分配电力相关联的组件。
在图12、图13和图14中的音频组件,被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所属设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (30)
1.一种表格数据的解析方法,其特征在于,包括:
对表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据。
2.根据权利要求1所述的方法,其特征在于,所述对表格文件中的行数据进行解析,包括:
将所述表格文件读入内存,在内存中对所述表格文件中的行数据进行解析;或者
从所述表格文件所在的存储区域读取所述行数据至内存,在内存中对所述行数据进行解析。
3.根据权利要求1所述的方法,其特征在于,还包括:
基于内存的空闲容量,确定一次解析行数据的行数;以及
所述对表格文件中的行数据进行解析,包括:
对所述表格文件中的所述行数的行数据进行解析。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述对表格文件中的行数据进行解析,包括:
调用开源框架模型,对所述行数据进行解析。
5.根据权利要求4所述的方法,其特征在于,所述表格文件为xlsx存储格式的excel文件;以及
所述调用开源框架模型,对所述行数据进行解析,包括:
调用Apachepoi的事件驱动模型,解析所述行数据的xml文件。
6.根据权利要求1至3中任一项所述的方法,其特征在于,还包括:
抛弃解析所述行数据得到的解析结果中的业务无关数据。
7.根据权利要求6所述的方法,其特征在于,抛弃所述解析结果中的业务无关数据,包括:
获取所述表格文件对应的映射模型;
抛弃所述解析结果中未映射到所述映射模型的数据。
8.根据权利要求6所述的方法,其特征在于,所述方法采用观察者模式实现,所述观察者模式中包含:发布方、调度方及第一订阅方;以及
抛弃所述解析结果中的业务无关数据,包括:
所述调度方判断所述发布方在所述行数据解析完成后发布的所述解析结果是否需要模型映射;
需要模型映射时,所述调度方将所述解析结果发送至执行模型映射的所述第一订阅方,以由所述第一订阅方基于本地映射模型,抛弃所述解析结果中未映射到所述映射模型的数据,得到所述行数据对应的业务相关结果;
所述调度方接收所述第一订阅方反馈的所述行数据对应的业务相关结果。
9.根据权利要求8所述的方法,其特征在于,所述观察者模式中还包含:第二订阅方;以及
所述方法,还包括:
所述调度方将所述行数据对应的业务相关结果发送至所述第二订阅方,以由所述第二订阅方作进一步处理或转发。
10.根据权利要求8所述的方法,其特征在于,还包括:
无需模型映射时,所述调度方将所述解析结果发送至所述第二订阅方,以由所述第二订阅方作进一步处理或转发。
11.根据权利要求1至3中任一项所述的方法,其特征在于,还包括:
解析所述行数据得到的解析结果中包含有日期类型数据时,调用自定义转换函数;
将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
12.根据权利要求1至3中任一项所述的方法,其特征在于,释放解析所述行数据所占用的内存资源,包括:
调用垃圾收集器GC回收解析所述行数据所占用的内存资源。
13.一种表格数据的解析方法,适用于服务端,其特征在于,包括:
接收客户端上传的表格文件;
对所述表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端。
14.根据权利要求13所述的方法,其特征在于,所述对表格文件中的行数据进行解析,包括:
将所述表格文件读入内存,在内存中对所述表格文件中的行数据进行解析;或者
从所述表格文件所在的存储区域读取所述行数据至内存,在内存中对所述行数据进行解析。
15.根据权利要求13所述的方法,其特征在于,还包括:
基于内存的空闲容量,确定一次解析行数据的行数;以及
所述对表格文件中的行数据进行解析,包括:
对所述表格文件中的所述行数的行数据进行解析。
16.根据权利要求13至15中任一项所述的方法,其特征在于,所述对表格文件中的行数据进行解析,包括:
调用开源框架模型,对所述行数据进行解析。
17.根据权利要求16所述的方法,其特征在于,所述表格文件为xlsx存储格式的excel文件;以及
所述调用开源框架模型,对所述行数据进行解析,包括:
调用Apachepoi的事件驱动模型,解析所述行数据的xml文件。
18.根据权利要求13至15中任一项所述的方法,其特征在于,还包括:
抛弃解析所述行数据得到的解析结果中的业务无关数据。
19.根据权利要求18所述的方法,其特征在于,抛弃所述解析结果中的业务无关数据,包括:
获取所述表格文件对应的映射模型;
抛弃所述解析结果中未映射到所述映射模型的数据。
20.根据权利要求18中任一项所述的方法,其特征在于,所述方法采用观察者模式实现,所述观察者模式中包含:发布方、调度方及第一订阅方;以及
抛弃所述解析结果中的业务无关数据,包括:
所述调度方判断所述发布方在所述行数据解析完成后发布的所述解析结果是否需要模型映射;
需要模型映射时,所述调度方将所述解析结果发送至执行模型映射的所述第一订阅方,以由所述第一订阅方基于本地映射模型,抛弃所述解析结果中未映射到所述映射模型的数据,得到所述行数据对应的业务相关结果;
所述调度方接收所述第一订阅方反馈的所述行数据对应的业务相关结果。
21.根据权利要求20所述的方法,其特征在于,所述观察者模式还包括第二订阅方;以及
所述方法,还包括:
所述调度方将所述行数据对应的业务相关结果发送至第二订阅方。
22.根据权利要求21所述的方法,其特征在于,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端,包括:
所述第二订阅方在接收到所述表格文件中所有行数据各自对应的业务相关结果后,将所述表格文件中所有行数据各自对应的业务相关结果反馈至所述客户端。
23.根据权利要求13至15中任一项所述的方法,其特征在于,还包括:
解析所述行数据得到的解析结果中包含有日期类型数据时,调用自定义转换函数;
将所述日期类型数据作为所述自定义转换函数的入参,执行所述自定义转换函数以将所述日期类型数据转换为自定义日期类型。
24.根据权利要求13至15中任一项所述的方法,其特征在于,释放解析所述行数据所占用的内存资源,包括:
调用垃圾收集器GC回收解析所述行数据所占用的内存资源。
25.一种表格数据的解析方法,适用于客户端,其特征在于,包括:
向服务端上传表格文件;
接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果;
其中,所述表格文件中一行数据对应的解析结果是对所述行数据进行解析得到的;所述行数数据解析完成时,所述服务端会释放解析所述行数据所占用的内存资源以利用空出的内存资源解析所述表格文件中的后续行数据。
26.根据权利要求25所述的方法,其特征在于,还包括:
显示上传界面;
响应于用户通过所述上传界面触发的表格文件选择事件,获取所述选择事件指向的所述表格文件。
27.一种表格数据的解析***,其特征在于,包括:
服务端,用于接收客户端上传的表格文件;对所述表格文件中的行数据进行解析;所述行数据解析完成时,释放解析所述行数据所占用的内存资源;利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端;
客户端,用于向服务端上传表格文件;接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果。
28.一种电子设备,其特征在于,包括:第一存储器和第一处理器;其中,
所述第一存储器,用于存储程序;
所述第一处理器,与所述第一存储器耦合,用于执行所述第一存储器中存储的所述程序,以用于:
对表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据。
29.一种服务端设备,其特征在于,包括:第二存储器和第二处理器;其中,
所述第二存储器,用于存储程序;
所述第二处理器,与所述第二存储器耦合,用于执行所述第二存储器中存储的所述程序,以用于:
接收客户端上传的表格文件;
对所述表格文件中的行数据进行解析;
所述行数据解析完成时,释放解析所述行数据所占用的内存资源;
利用空出的内存资源解析所述表格文件中的后续行数据,待所述表格文件的所有行数据均解析完成后,将所述表格文件中所有行数据各自对应的解析结果反馈至所述客户端。
30.一种客户端设备,其特征在于,包括:第三存储器和第三处理器;其中,
所述第三存储器,用于存储程序;
所述第三处理器,与所述第三存储器耦合,用于执行所述第三存储器中存储的所述程序,以用于:
向服务端上传表格文件;
接收所述服务端反馈的所述表格文件中所有行数据各自对应的解析结果;
其中,所述表格文件中一行数据对应的解析结果是对所述行数据进行解析得到的;所述行数数据解析完成时,所述服务端会释放解析所述行数据所占用的内存资源以利用空出的内存资源解析所述表格文件中的后续行数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810108204.5A CN110134398A (zh) | 2018-02-02 | 2018-02-02 | 表格数据的解析方法、***及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810108204.5A CN110134398A (zh) | 2018-02-02 | 2018-02-02 | 表格数据的解析方法、***及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110134398A true CN110134398A (zh) | 2019-08-16 |
Family
ID=67567172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810108204.5A Pending CN110134398A (zh) | 2018-02-02 | 2018-02-02 | 表格数据的解析方法、***及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110134398A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633462A (zh) * | 2019-09-11 | 2019-12-31 | 四川长虹电器股份有限公司 | 一种Excel二维表格导入的方法 |
CN111240688A (zh) * | 2020-01-10 | 2020-06-05 | 深圳前海环融联易信息科技服务有限公司 | excel文件的解析方法、装置、计算机设备及存储介质 |
CN111651406A (zh) * | 2020-05-21 | 2020-09-11 | 杭州明讯软件技术有限公司 | 一种自动化载波调度***文件读取方法及装置 |
CN112540850A (zh) * | 2020-12-11 | 2021-03-23 | 中信银行股份有限公司 | 表格数据读取方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078216A1 (en) * | 2000-12-18 | 2002-06-20 | Igor Pankovcin | Method and system for processing data records having multiple formats |
CN103500196A (zh) * | 2013-09-22 | 2014-01-08 | 成都交大光芒科技股份有限公司 | 多并发大数据量环境下excel数据导出方法及其导出装置 |
CN107168695A (zh) * | 2017-04-18 | 2017-09-15 | 北京思特奇信息技术股份有限公司 | 一种excel数据解析方法及*** |
-
2018
- 2018-02-02 CN CN201810108204.5A patent/CN110134398A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078216A1 (en) * | 2000-12-18 | 2002-06-20 | Igor Pankovcin | Method and system for processing data records having multiple formats |
CN103500196A (zh) * | 2013-09-22 | 2014-01-08 | 成都交大光芒科技股份有限公司 | 多并发大数据量环境下excel数据导出方法及其导出装置 |
CN107168695A (zh) * | 2017-04-18 | 2017-09-15 | 北京思特奇信息技术股份有限公司 | 一种excel数据解析方法及*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633462A (zh) * | 2019-09-11 | 2019-12-31 | 四川长虹电器股份有限公司 | 一种Excel二维表格导入的方法 |
CN111240688A (zh) * | 2020-01-10 | 2020-06-05 | 深圳前海环融联易信息科技服务有限公司 | excel文件的解析方法、装置、计算机设备及存储介质 |
CN111240688B (zh) * | 2020-01-10 | 2023-08-18 | 深圳前海环融联易信息科技服务有限公司 | excel文件的解析方法、装置、计算机设备及存储介质 |
CN111651406A (zh) * | 2020-05-21 | 2020-09-11 | 杭州明讯软件技术有限公司 | 一种自动化载波调度***文件读取方法及装置 |
CN112540850A (zh) * | 2020-12-11 | 2021-03-23 | 中信银行股份有限公司 | 表格数据读取方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755452B2 (en) | Log data collection method based on log data generated by container in application container environment, log data collection device, storage medium, and log data collection system | |
CN110909063B (zh) | 一种用户行为的分析方法、装置、应用服务器及存储介质 | |
CN110134398A (zh) | 表格数据的解析方法、***及设备 | |
CN107241281B (zh) | 一种数据处理方法及其装置 | |
WO2018126964A1 (zh) | 任务执行方法、装置和服务器 | |
CN108776934A (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
CN110908658A (zh) | 一种“微服务+微应用”***、数据处理方法及装置 | |
CN104484216A (zh) | 服务接口文档和在线测试工具生成方法、装置 | |
CN113094136A (zh) | 页面显示控制方法、装置、存储介质及电子设备 | |
CN111476015B (zh) | 一种文档处理方法、装置、电子设备及存储介质 | |
CN110928851B (zh) | 处理日志信息的方法、装置、设备及存储介质 | |
CN110955640B (zh) | 跨***数据文件的处理方法、装置、服务器和存储介质 | |
CN110472109B (zh) | 动态化数据质量分析方法及平台*** | |
CN111917863A (zh) | 消息推送方法、装置、电视机设备及计算机存储介质 | |
CN112783874A (zh) | 一种数据分析方法、装置和*** | |
CN114125050A (zh) | 消息调度方法、装置、设备及存储介质 | |
CN114265883B (zh) | 一种实时数据治理的方法、设备、存储介质 | |
CN111984505A (zh) | 一种运维数据采集引擎及采集方法 | |
CN113608842B (zh) | 一种容器集群和组件的管理方法、装置、***及存储介质 | |
CN115964392A (zh) | 基于flink的实时监控方法、装置、设备及可读存储介质 | |
CN113422808B (zh) | 物联网平台http信息推送方法、***、装置及介质 | |
CN110688383A (zh) | 数据采集方法及*** | |
CN101694661B (zh) | 一种统计报表生成方法、装置和统计服务器 | |
CN113779949A (zh) | 一种报告生成方法、装置、电子设备、存储介质及*** | |
CN112162951A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190816 |