CN109783554A - excel文档解析方法、装置及计算机可读存储介质 - Google Patents
excel文档解析方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109783554A CN109783554A CN201811526477.8A CN201811526477A CN109783554A CN 109783554 A CN109783554 A CN 109783554A CN 201811526477 A CN201811526477 A CN 201811526477A CN 109783554 A CN109783554 A CN 109783554A
- Authority
- CN
- China
- Prior art keywords
- document
- target
- excel
- cell
- xml document
- 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 28
- 238000000034 method Methods 0.000 claims abstract description 42
- 239000000284 extract Substances 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 23
- 230000006837 decompression Effects 0.000 claims description 14
- 238000000605 extraction Methods 0.000 claims description 11
- 230000004913 activation Effects 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000012089 stop solution Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009527 percussion Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明涉及数据展示,公开了一种excel文档解析方法,该方法包括:获取目标excel文档;从目标excel文档中提取待分析的目标xml文件;基于SAX解析器访问目标xml文件,并对目标xml文件进行逐行解析,提取目标xml文件中的单元格数据和单元格位置信息;封装提取的单元格数据和单元格位置信息。本发明还提出一种excel文档解析装置以及一种计算机可读存储介质。本发明提高了解析excel文档的效率。
Description
技术领域
本发明涉及数据展示技术领域,尤其涉及一种excel文档解析方法、装置及计算机可读存储介质。
背景技术
随着信息技术的发展,计算机技术已经渗透到各个行业中,大多数公司都有适合自身业务的业务系统,在业务系统中必不可少的就是各种表格,由于excel具有强大的表格处理功能,大多数公司一般使用excel软件制作表格并导入到业务系统中,这种情况下需要使用工具对制作的excel文档进行解析并进行数据提取。
Apache POI(Poor Obfuscation Implementation,简洁版的模糊实现)是应用Java编写的免费开源的跨平台的Java API(Application Programming Interface,应用程序编程接口),Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能,特别是Java操作excel解决方案。目前,应用Apache POI对excel文档进行解析已经成为excel解析的主流方法。但是POI组件虽然功能强大,效率高,但是需要牺牲内存以获取部分效率,随着数据量的增大,在解析excel文档时性能会直线下降,导致内存溢出,使得解析程序耗时耗力,文档解析效率低下。
发明内容
本发明提供一种excel文档解析方法、装置及计算机可读存储介质,其主要目的在于提高解析excel文档的效率。
为实现上述目的,本发明还提供一种excel文档解析方法,该方法包括:
获取目标excel文档;
从所述目标excel文档中提取待分析的目标xml文件;
基于SAX解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
封装提取的所述单元格数据和单元格位置信息。
可选地,所述从所述目标excel文档中提取待分析的目标xml文件的步骤包括:
将目标excel文档的格式转换为压缩文件格式,对压缩文件格式的目标excel文档进行解压缩操作,从解压缩得到的文件夹中获取目标xml文件。
可选地,所述基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息的步骤包括如下细化步骤:
扫描所述目标xml文件,并在扫描到预设文档标记时,基于sax解析器激活与所述预设文档标记对应的事件处理函数;
执行所述事件处理函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件;
提取所述目标xml文件中的单元格数据和单元格位置信息。
可选地,所述预设文档标记包括文档开始标记、文档结束标记、元素开始标记、元素结束标记。
可选地,在所述获取目标excel文档的步骤之后,该方法还包括如下步骤:
判断所述目标excel文档的格式是否为预设格式;
若是,则执行从所述目标excel文档中提取待分析的目标xml文件的步骤;
若不是,则根据预设的JXL组件对所述目标excel文档进行解析,从所述目标excel文档中提取单元格数据和单元格的位置信息,并封装所述单元格数据和单元格的位置信息。
此外,为实现上述目的,本发明还提供一种excel文档解析装置,该装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的文档解析程序,所述文档解析程序被所述处理器执行时实现如下步骤:
获取目标excel文档;
从所述目标excel文档中提取待分析的目标xml文件;
基于SAX解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
封装提取的所述单元格数据和单元格位置信息。
可选地,所述从所述目标excel文档中提取待分析的目标xml文件的步骤包括:
将目标excel文档的格式转换为压缩文件格式,对压缩文件格式的目标excel文档进行解压缩操作,从解压缩得到的文件夹中获取目标xml文件。
可选地,所述基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息的步骤包括如下细化步骤:
扫描所述目标xml文件,并在扫描到预设文档标记时,基于sax解析器激活与所述预设文档标记对应的事件处理函数;
执行所述事件处理函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件;
提取所述目标xml文件中的单元格数据和单元格位置信息。
可选地,所述文档解析程序还可被所述处理器执行,以在所述获取目标excel文档的步骤之后,还实现如下步骤:
判断所述目标excel文档的格式是否为预设格式;
若是,则执行从所述目标excel文档中提取待分析的目标xml文件的步骤;
若不是,则根据预设的JXL组件对所述目标excel文档进行解析,从所述目标excel文档中提取单元格数据和单元格的位置信息,并封装所述单元格数据和单元格的位置信息。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有文档解析程序,所述文档解析程序可被一个或者多个处理器执行,以实现如上所述的excel文档解析方法的步骤。
本发明提出的excel文档解析方法、装置及计算机可读存储介质,获取目标excel文档;从目标excel文档中提取待分析的目标xml文件;基于sax解析器访问目标xml文件,并对目标xml文件进行逐行解析,以提取目标xml文件中的单元格数据和单元格位置信息;封装提取的单元格数据和单元格位置信息。本发明通过对excel文档的结构进行分析,只解析excel文档中特定的xml文件,实现了高效的excel文档的数据解析方式,降低了excel文档的数据解析对计算机系统内存的需求,可以应对较大的excel文档,同时提高了解析excel文档的效率。
附图说明
图1为本发明一实施例提供的excel文档解析方法的流程示意图;
图2为本发明一实施例提供的excel文档解析装置的内部结构示意图;
图3为本发明一实施例提供的excel文档解析装置中文档解析程序的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种excel文档解析方法。参照图1所示,为本发明一实施例提供的excel文档解析方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,excel文档解析方法包括:
步骤S10,获取目标excel文档;
步骤S20,从所述目标excel文档中提取待分析的目标xml文件;
步骤S30,基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
步骤S40,封装提取的所述单元格数据和单元格位置信息。
区别于传统的Apache POI对excel文档整体进行解析的方法,本发明具体实施例中对目标excel文档进行解压缩操作,从解压缩操作后的文档夹中获取到目标excel文档中的核心xml(Extensible Markup Language,可扩展标记语言)文档,将该目标xml文件作为待分析的主要文档,该目标xml文件中包含有excel文档的表格中的内容信息。具体地,所述从所述目标excel文档中提取待分析的目标xml文件的步骤包括:将目标excel文档的格式转换为压缩文件格式,对压缩文件格式的目标excel文档进行解压缩操作,从解压缩得到的文件夹中获取目标xml文件。本方案中以压缩文件的形式获取目标excel文档,例如,获取的目标excel文档的格式为zip格式,根据Office Open xml文件格式的规定,在zip格式的文件流内至少包含描述应用程序数据、元数据以及自定义数据的xml文件等。
对解压缩得到的文件进行解析,获取关于工作簿和工作表的信息。主要包括通过解压缩zip格式的excel文档,读取经过解压缩获取到的文件夹中的工作薄和工作表的信息。通过工作簿的信息可了解excel文档的概况,通过工作表的信息可了解工作表和xml文件的映射关系,具体来说可通过文件中诸如workbook.xml等文件获得这些信息。
进一步地,所述基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息的步骤包括如下细化步骤:
扫描所述目标xml文件,并在扫描到预设文档标记时,基于sax解析器激活与所述预设文档标记对应的事件处理函数;
执行所述事件处理函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件;
提取所述目标xml文件中的单元格数据和单元格位置信息。
具体地,每一个excel文档都有一个唯一标识,用于区别其他的excel文档。访问目标xml文件,可以获取到该文档的内容信息,所述内容信息包括所述目标excel文档的唯一标识、每一所述列名对应列的单元格数据和每一所述单元格数据对应的行数。因而所述内容信息中包括了所述excel文档中每一单元格的数据以及所述每一单元格数据在所述目标excel文档中的位置,即所述每一单元格数据对应的列名和行数。在基于sax解析器对目标xml文件进行解析时,按照行的顺序依次读取所述目标Excel文档中包含数据的第一行单元格,并根据预设命名规则和单元格的列号设置所述单元格所在列的列名。具体地,按照行的顺序依次读取目标xml文件中存在数据的第一行单元格,根据获取的第一行的各个单元格的列号,按照预设命名规则,对各个单元格所属的列进行命名。例如,假设目标xml文件中有100列数据,获取该文档中存储有数据的第一行,依次读取第一行数据中的每一个单元格中的数据,根据单元格所在的列位置,根据所述单元格所在的列位置动态拼接表字段名称c1、c2、…、c100,将包含有数据的列对应保存在数据库表中,将没有数据的列标识为空。
按照上述方式逐行识别单元格中的数据和单元格的位置信息,将提取到的全部单元格数据和位置信息封装为一个完整的对象。
sax(simple API for xml)解析器是一种xml解析的替代方法,sax是一个事件驱动型解析器,它逐行扫描文档,一边扫描一边解析,并且能够在解析文档的任意时刻停止解析。sax解析器的工作原理如下:对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。大多数sax都会产生以下类型的事件:在文档的开始和结束时触发文档处理事件;在文档内每一xml元素接受解析的前后触发元素事件;任何元数据通常由单独的事件处理等。
在本方案中,通过实现DefaultHandler和HSSFListener接口,获取xml文件中单元格中的数据。sax解析器在扫描xml文件的过程中,每当它识别出文档中的某些内容,就会生成一个事件。当它扫描到预设文档标记时,激活与预设文档标记对应的事件处理函数,自行该函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件。其中,预设文档标记包括文档开始标记、文档结束标记、元素开始标记、元素结束标记等。
以下以一个实际的应用场景为例说明sax解析器在扫描xml文件的过程:假设一个excel文档中存储的是一个价格清单(price-list),该价格清单中包含有两列,product(产品)列和price-quote(报价)列。则sax解析器对该文档的解析过程如下:
sax解析器访问并解析从该excel文档中提取出的xml文件,每当它识别出文档中的某些内容,就会生成一个事件。
sax解析器首先读取xml声明并生成文档开始事件。当它遇到第一个开始标记时,sax解析器生成它的第二个事件来通知应用程序已经遇到了price-list元素。接下来,sax解析器看到product元素的开始标记并生成它的第三个事件。在开始标记后,sax解析器看到product元素的内容,它产生另一个事件。下一个事件指出product元素的结束标记。sax解析器已经完成了对product元素的语法分析。到目前为止,它已经激发了5个事件:product元素的3个事件,一个文档开始事件和一个price-list开始标记事件。sax解析器现在移动到第一个price-quote元素。它为每个price-quote元素生成两个事件:一个开始标记事件和一个结束标记事件。最后,sax解析器遇到price-list的结束标记并生成它的最后两个事件:结束price-list和文档结束。
进一步地,在所述获取目标excel文档的步骤之后,该方法还包括如下步骤:
判断所述目标excel文档的格式是否为预设格式;
若是,则执行从所述目标excel文档中提取待分析的目标xml文件的步骤;
若不是,则根据预设的JXL组件对所述目标excel文档进行解析,从所述目标excel文档中提取单元格数据和单元格的位置信息,并封装所述单元格数据和单元格的位置信息。
本实施例提出的excel文档解析方法,获取目标excel文档;从目标excel文档中提取待分析的目标xml文件;基于sax解析器访问目标xml文件,并对目标xml文件进行逐行解析,以提取目标xml文件中的单元格数据和单元格位置信息;封装提取的单元格数据和单元格位置信息。本发明通过对excel文档的结构进行分析,只解析excel文档中特定的xml文件,实现了高效的excel文档的数据解析方式,降低了excel文档的数据解析对计算机系统内存的需求,可以应对较大的excel文档,同时提高了excel文档的数据解析效率。
本发明还提供一种excel文档解析装置。参照图2所示,为本发明一实施例提供的excel文档解析装置的内部结构示意图。
在本实施例中,excel文档解析装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、便携计算机等终端设备。该excel文档解析装置1至少包括存储器11、处理器12,网络接口13以及通信总线。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是excel文档解析装置1的内部存储单元,例如该excel文档解析装置1的硬盘。存储器11在另一些实施例中也可以是excel文档解析装置1的外部存储设备,例如excel文档解析装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括excel文档解析装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于excel文档解析装置1的应用软件及各类数据,例如文档解析程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行文档解析程序01等。
网络接口13可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该装置1与其他电子设备之间建立通信连接。
通信总线用于实现这些组件之间的连接通信。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在excel文档解析装置1中处理的信息以及用于显示可视化的用户界面。
图2仅示出了具有组件11-13以及文档解析程序01的excel文档解析装置1,本领域技术人员可以理解的是,图1示出的结构并不构成对excel文档解析装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
可选地,该装置1还可以包括触摸传感器。所述触摸传感器所提供的供用户进行触摸操作的区域称为触控区域。此外,这里所述的触摸传感器可以为电阻式触摸传感器、电容式触摸传感器等。而且,所述触摸传感器不仅包括接触式的触摸传感器,也可包括接近式的触摸传感器等。此外,所述触摸传感器可以为单个传感器,也可以为阵列布置的多个传感器。该装置1的显示器的面积可以与所述触摸传感器的面积相同,也可以不同。可选地,将显示器与所述触摸传感器层叠设置,以形成触摸显示屏。该装置1基于触摸显示屏侦测用户触发的触控操作。
可选地,该装置1还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,若该装置1为移动终端,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
在图2所示的装置1实施例中,存储器11中存储有文档解析程序01;处理器12执行存储器11中存储的文档解析程序01时实现如下步骤:
获取目标excel文档;
从所述目标excel文档中提取待分析的目标xml文件;
基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
封装提取的所述单元格数据和单元格位置信息。
区别于传统的Apache POI对excel文档整体进行解析的方法,本发明具体实施例中对目标excel文档进行解压缩操作,从解压缩操作后的文档夹中获取到目标excel文档中的核心xml(Extensible Markup Language,可扩展标记语言)文档,将该目标xml文件作为待分析的主要文档,该目标xml文件中包含有excel文档的表格中的内容信息。具体地,所述从所述目标excel文档中提取待分析的目标xml文件的步骤包括:将目标excel文档的格式转换为压缩文件格式,对压缩文件格式的目标excel文档进行解压缩操作,从解压缩得到的文件夹中获取目标xml文件。本方案中以压缩文件的形式获取目标excel文档,例如,获取的目标excel文档的格式为zip格式,根据Office Open xml文件格式的规定,在zip格式的文件流内至少包含描述应用程序数据、元数据以及自定义数据的xml文件等。
对解压缩得到的文件进行解析,获取关于工作簿和工作表的信息。主要包括通过解压缩zip格式的excel文档,读取经过解压缩获取到的文件夹中的工作薄和工作表的信息。通过工作簿的信息可了解excel文档的概况,通过工作表的信息可了解工作表和xml文件的映射关系,具体来说可通过文件中诸如workbook.xml等文件获得这些信息。
进一步地,所述基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息的步骤包括如下细化步骤:
扫描所述目标xml文件,并在扫描到预设文档标记时,基于sax解析器激活与所述预设文档标记对应的事件处理函数;
执行所述事件处理函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件;
提取所述目标xml文件中的单元格数据和单元格位置信息。
具体地,每一个excel文档都有一个唯一标识,用于区别其他的excel文档。访问目标xml文件,可以获取到该文档的内容信息,所述内容信息包括所述目标excel文档的唯一标识、每一所述列名对应列的单元格数据和每一所述单元格数据对应的行数。因而所述内容信息中包括了所述excel文档中每一单元格的数据以及所述每一单元格数据在所述目标excel文档中的位置,即所述每一单元格数据对应的列名和行数。在基于sax解析器对目标xml文件进行解析时,按照行的顺序依次读取所述目标Excel文档中包含数据的第一行单元格,并根据预设命名规则和单元格的列号设置所述单元格所在列的列名。具体地,按照行的顺序依次读取目标xml文件中存在数据的第一行单元格,根据获取的第一行的各个单元格的列号,按照预设命名规则,对各个单元格所属的列进行命名。例如,假设目标xml文件中有100列数据,获取该文档中存储有数据的第一行,依次读取第一行数据中的每一个单元格中的数据,根据单元格所在的列位置,根据所述单元格所在的列位置动态拼接表字段名称c1、c2、…、c100,将包含有数据的列对应保存在数据库表中,将没有数据的列标识为空。
按照上述方式逐行识别单元格中的数据和单元格的位置信息,将提取到的全部单元格数据和位置信息封装为一个完整的对象。
sax(simple API for xml)解析器是一种xml解析的替代方法,sax是一个事件驱动型解析器,它逐行扫描文档,一边扫描一边解析,并且能够在解析文档的任意时刻停止解析。sax解析器的工作原理如下:对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。大多数sax都会产生以下类型的事件:在文档的开始和结束时触发文档处理事件;在文档内每一xml元素接受解析的前后触发元素事件;任何元数据通常由单独的事件处理等。
在本方案中,通过实现DefaultHandler和HSSFListener接口,获取xml文件中单元格中的数据。sax解析器在扫描xml文件的过程中,每当它识别出文档中的某些内容,就会生成一个事件。当它扫描到预设文档标记时,激活与预设文档标记对应的事件处理函数,自行该函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件。其中,预设文档标记包括文档开始标记、文档结束标记、元素开始标记、元素结束标记等。
以下以一个实际的应用场景为例说明sax解析器在扫描xml文件的过程:假设一个excel文档中存储的是一个价格清单(price-list),该价格清单中包含有两列,product(产品)列和price-quote(报价)列。则sax解析器对该文档的解析过程如下:
sax解析器访问并解析从该excel文档中提取出的xml文件,每当它识别出文档中的某些内容,就会生成一个事件。
sax解析器首先读取xml声明并生成文档开始事件。当它遇到第一个开始标记时,sax解析器生成它的第二个事件来通知应用程序已经遇到了price-list元素。接下来,sax解析器看到product元素的开始标记并生成它的第三个事件。在开始标记后,sax解析器看到product元素的内容,它产生另一个事件。下一个事件指出product元素的结束标记。sax解析器已经完成了对product元素的语法分析。到目前为止,它已经激发了5个事件:product元素的3个事件,一个文档开始事件和一个price-list开始标记事件。sax解析器现在移动到第一个price-quote元素。它为每个price-quote元素生成两个事件:一个开始标记事件和一个结束标记事件。最后,sax解析器遇到price-list的结束标记并生成它的最后两个事件:结束price-list和文档结束。
进一步地,在所述获取目标excel文档的步骤之后,该方法还包括如下步骤:
判断所述目标excel文档的格式是否为预设格式;
若是,则执行从所述目标excel文档中提取待分析的目标xml文件的步骤;
若不是,则根据预设的JXL组件对所述目标excel文档进行解析,从所述目标excel文档中提取单元格数据和单元格的位置信息,并封装所述单元格数据和单元格的位置信息。
本实施例提出的excel文档解析装置,获取目标excel文档;从目标excel文档中提取待分析的目标xml文件;基于sax解析器访问目标xml文件,并对目标xml文件进行逐行解析,以提取目标xml文件中的单元格数据和单元格位置信息;封装提取的单元格数据和单元格位置信息。本发明通过对excel文档的结构进行分析,只解析excel文档中特定的xml文件,实现了高效的excel文档的数据解析方式,降低了excel文档的数据解析对计算机系统内存的需求,可以应对较大的excel文档,同时提高了excel文档的数据解析效率。
可选地,在其他的实施例中,文档解析程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述文档解析程序在excel文档解析装置中的执行过程。
例如,参照图3所示,为本发明excel文档解析装置一实施例中的文档解析程序的程序模块示意图,该实施例中,文档解析程序可以被分割为文档获取模块10、文件提取模块20、文件解析模块30和数据封装模块40,示例性地:
文档获取模块10用于:获取目标excel文档;
文件提取模块20用于:从所述目标excel文档中提取待分析的目标xml文件;
文件解析模块30用于:基于SAX解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
数据封装模块40用于:封装提取的所述单元格数据和单元格位置信息。
上述文档获取模块10、文件提取模块20、文件解析模块30和数据封装模块40等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有文档解析程序,所述文档解析程序可被一个或多个处理器执行,以实现如下操作:
获取目标excel文档;
从所述目标excel文档中提取待分析的目标xml文件;
基于SAX解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
封装提取的所述单元格数据和单元格位置信息。
本发明计算机可读存储介质具体实施方式与上述excel文档解析装置和方法各实施例基本相同,在此不作累述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种excel文档解析方法,其特征在于,所述方法包括:
获取目标excel文档;
从所述目标excel文档中提取待分析的目标xml文件;
基于SAX解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
封装提取的所述单元格数据和单元格位置信息。
2.如权利要求1所述的excel文档解析方法,其特征在于,所述从所述目标excel文档中提取待分析的目标xml文件的步骤包括:
将目标excel文档的格式转换为压缩文件格式,对压缩文件格式的目标excel文档进行解压缩操作,从解压缩得到的文件夹中获取目标xml文件。
3.如权利要求1所述的excel文档解析方法,其特征在于,所述基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息的步骤包括如下细化步骤:
扫描所述目标xml文件,并在扫描到预设文档标记时,基于sax解析器激活与所述预设文档标记对应的事件处理函数;
执行所述事件处理函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件;
提取所述目标xml文件中的单元格数据和单元格位置信息。
4.如权利要求3所述的excel文档解析方法,其特征在于,所述预设文档标记包括文档开始标记、文档结束标记、元素开始标记、元素结束标记。
5.如权利要求1至4中任一项所述的excel文档解析方法,其特征在于,在所述获取目标excel文档的步骤之后,该方法还包括如下步骤:
判断所述目标excel文档的格式是否为预设格式;
若是,则执行从所述目标excel文档中提取待分析的目标xml文件的步骤;
若不是,则根据预设的JXL组件对所述目标excel文档进行解析,从所述目标excel文档中提取单元格数据和单元格的位置信息,并封装所述单元格数据和单元格的位置信息。
6.一种excel文档解析装置,其特征在于,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的文档解析程序,所述文档解析程序被所述处理器执行时实现如下步骤:
获取目标excel文档;
从所述目标excel文档中提取待分析的目标xml文件;
基于SAX解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息;
封装提取的所述单元格数据和单元格位置信息。
7.如权利要求6所述的excel文档解析装置,其特征在于,所述从所述目标excel文档中提取待分析的目标xml文件的步骤包括:
将目标excel文档的格式转换为压缩文件格式,对压缩文件格式的目标excel文档进行解压缩操作,从解压缩得到的文件夹中获取目标xml文件。
8.如权利要求6所述的excel文档解析装置,其特征在于,所述基于sax解析器访问所述目标xml文件,并对所述目标xml文件进行逐行解析,以提取所述目标xml文件中的单元格数据和单元格位置信息的步骤包括如下细化步骤:
扫描所述目标xml文件,并在扫描到预设文档标记时,基于sax解析器激活与所述预设文档标记对应的事件处理函数;
执行所述事件处理函数以触发对应的文档处理事件,根据所述文档处理事件逐行解析所述目标xml文件;
提取所述目标xml文件中的单元格数据和单元格位置信息。
9.如权利要求6至8中任一项所述的excel文档解析装置,其特征在于,所述文档解析程序还可被所述处理器执行,以在所述获取目标excel文档的步骤之后,还实现如下步骤:
判断所述目标excel文档的格式是否为预设格式;
若是,则执行从所述目标excel文档中提取待分析的目标xml文件的步骤;
若不是,则根据预设的JXL组件对所述目标excel文档进行解析,从所述目标excel文档中提取单元格数据和单元格的位置信息,并封装所述单元格数据和单元格的位置信息。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有文档解析程序,所述文档解析程序可被一个或者多个处理器执行,以实现如权利要求1至5中任一项所述的excel文档解析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811526477.8A CN109783554A (zh) | 2018-12-13 | 2018-12-13 | excel文档解析方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811526477.8A CN109783554A (zh) | 2018-12-13 | 2018-12-13 | excel文档解析方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109783554A true CN109783554A (zh) | 2019-05-21 |
Family
ID=66496936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811526477.8A Pending CN109783554A (zh) | 2018-12-13 | 2018-12-13 | excel文档解析方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783554A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457021A (zh) * | 2019-07-12 | 2019-11-15 | 招商局金融科技有限公司 | 指标数据处理方法、装置及计算机可读存储介质 |
CN110765741A (zh) * | 2019-09-09 | 2020-02-07 | 重庆金融资产交易所有限责任公司 | 数据处理的方法、装置、计算机设备和存储介质 |
CN111241096A (zh) * | 2020-01-07 | 2020-06-05 | 中孚安全技术有限公司 | 一种excel文档的文本提取方法、系统、终端及存储介质 |
CN111259641A (zh) * | 2020-01-15 | 2020-06-09 | 深圳震有科技股份有限公司 | 一种excel数据处理方法、终端及存储介质 |
CN111581948A (zh) * | 2020-04-03 | 2020-08-25 | 北京百度网讯科技有限公司 | 文档解析方法、装置、设备及存储介质 |
CN111695330A (zh) * | 2020-06-30 | 2020-09-22 | 望海康信(北京)科技股份公司 | 生成表格的方法、装置、电子设备及计算机可读存储介质 |
CN112445936A (zh) * | 2019-08-28 | 2021-03-05 | 北京国双科技有限公司 | 一种提取xlsx文件内容的方法及装置 |
CN112446193A (zh) * | 2019-08-28 | 2021-03-05 | 北京国双科技有限公司 | 一种提取pptx文件内容的方法及装置 |
CN112528080A (zh) * | 2019-09-03 | 2021-03-19 | 北京国双科技有限公司 | 一种docx文件文本内容的提取方法及装置 |
CN113033165A (zh) * | 2019-12-24 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 电子表格文件解析方法、装置和计算机可读存储介质 |
CN113095044A (zh) * | 2021-04-13 | 2021-07-09 | 中国工商银行股份有限公司 | 一种文件转换方法、装置及设备 |
CN113128178A (zh) * | 2019-12-31 | 2021-07-16 | 安徽佰通教育科技发展有限公司 | 一种通过xml文档对office文件解析的方法 |
CN113656999A (zh) * | 2021-07-29 | 2021-11-16 | 东风柳州汽车有限公司 | 头文件的生成方法、装置、设备及存储介质 |
CN113703787A (zh) * | 2020-05-20 | 2021-11-26 | 网神信息技术(北京)股份有限公司 | 安装包处理方法、装置、电子设备、计算机可读存储介质 |
CN113761840A (zh) * | 2021-09-08 | 2021-12-07 | 中信建投证券股份有限公司 | 智能文档处理方法、系统、计算机设备及介质 |
CN114492346A (zh) * | 2021-12-29 | 2022-05-13 | 深圳市瑞立视多媒体科技有限公司 | 一种基于虚拟引擎的Excel表格数据读取方法及系统 |
CN116757170A (zh) * | 2023-08-21 | 2023-09-15 | 成都数联云算科技有限公司 | 一种基于JAVA语言的Excel表格导入方法和系统 |
CN117910441A (zh) * | 2023-12-18 | 2024-04-19 | 中国人寿保险股份有限公司 | 表格数据提取方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102215126A (zh) * | 2011-06-08 | 2011-10-12 | 中兴通讯股份有限公司 | 性能报表的生成方法及装置 |
CN104572666A (zh) * | 2013-10-15 | 2015-04-29 | 镇江雅迅软件有限责任公司 | 一种基于Jxl批量解析Excel并导入数据库的方法 |
CN105574164A (zh) * | 2015-12-16 | 2016-05-11 | 北京华傲达数据技术有限公司 | Excel文档的数据解析方法及装置 |
CN107368593A (zh) * | 2017-07-25 | 2017-11-21 | 万帮充电设备有限公司 | 数据导入方法、装置及服务器 |
CN108170638A (zh) * | 2017-12-21 | 2018-06-15 | 平安科技(深圳)有限公司 | 基于Excel表的计算方法、装置、设备及存储介质 |
-
2018
- 2018-12-13 CN CN201811526477.8A patent/CN109783554A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102215126A (zh) * | 2011-06-08 | 2011-10-12 | 中兴通讯股份有限公司 | 性能报表的生成方法及装置 |
CN104572666A (zh) * | 2013-10-15 | 2015-04-29 | 镇江雅迅软件有限责任公司 | 一种基于Jxl批量解析Excel并导入数据库的方法 |
CN105574164A (zh) * | 2015-12-16 | 2016-05-11 | 北京华傲达数据技术有限公司 | Excel文档的数据解析方法及装置 |
CN107368593A (zh) * | 2017-07-25 | 2017-11-21 | 万帮充电设备有限公司 | 数据导入方法、装置及服务器 |
CN108170638A (zh) * | 2017-12-21 | 2018-06-15 | 平安科技(深圳)有限公司 | 基于Excel表的计算方法、装置、设备及存储介质 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457021A (zh) * | 2019-07-12 | 2019-11-15 | 招商局金融科技有限公司 | 指标数据处理方法、装置及计算机可读存储介质 |
CN112445936A (zh) * | 2019-08-28 | 2021-03-05 | 北京国双科技有限公司 | 一种提取xlsx文件内容的方法及装置 |
CN112446193A (zh) * | 2019-08-28 | 2021-03-05 | 北京国双科技有限公司 | 一种提取pptx文件内容的方法及装置 |
CN112528080A (zh) * | 2019-09-03 | 2021-03-19 | 北京国双科技有限公司 | 一种docx文件文本内容的提取方法及装置 |
CN110765741A (zh) * | 2019-09-09 | 2020-02-07 | 重庆金融资产交易所有限责任公司 | 数据处理的方法、装置、计算机设备和存储介质 |
CN113033165A (zh) * | 2019-12-24 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 电子表格文件解析方法、装置和计算机可读存储介质 |
CN113033165B (zh) * | 2019-12-24 | 2024-03-01 | 腾讯科技(深圳)有限公司 | 电子表格文件解析方法、装置和计算机可读存储介质 |
CN113128178A (zh) * | 2019-12-31 | 2021-07-16 | 安徽佰通教育科技发展有限公司 | 一种通过xml文档对office文件解析的方法 |
CN111241096A (zh) * | 2020-01-07 | 2020-06-05 | 中孚安全技术有限公司 | 一种excel文档的文本提取方法、系统、终端及存储介质 |
CN111259641B (zh) * | 2020-01-15 | 2023-08-11 | 深圳震有科技股份有限公司 | 一种excel数据处理方法、终端及存储介质 |
CN111259641A (zh) * | 2020-01-15 | 2020-06-09 | 深圳震有科技股份有限公司 | 一种excel数据处理方法、终端及存储介质 |
CN111581948A (zh) * | 2020-04-03 | 2020-08-25 | 北京百度网讯科技有限公司 | 文档解析方法、装置、设备及存储介质 |
CN111581948B (zh) * | 2020-04-03 | 2024-02-09 | 北京百度网讯科技有限公司 | 文档解析方法、装置、设备及存储介质 |
CN113703787A (zh) * | 2020-05-20 | 2021-11-26 | 网神信息技术(北京)股份有限公司 | 安装包处理方法、装置、电子设备、计算机可读存储介质 |
CN111695330B (zh) * | 2020-06-30 | 2023-10-27 | 望海康信(北京)科技股份公司 | 生成表格的方法、装置、电子设备及计算机可读存储介质 |
CN111695330A (zh) * | 2020-06-30 | 2020-09-22 | 望海康信(北京)科技股份公司 | 生成表格的方法、装置、电子设备及计算机可读存储介质 |
CN113095044A (zh) * | 2021-04-13 | 2021-07-09 | 中国工商银行股份有限公司 | 一种文件转换方法、装置及设备 |
CN113656999A (zh) * | 2021-07-29 | 2021-11-16 | 东风柳州汽车有限公司 | 头文件的生成方法、装置、设备及存储介质 |
CN113656999B (zh) * | 2021-07-29 | 2024-08-23 | 东风柳州汽车有限公司 | 头文件的生成方法、装置、设备及存储介质 |
CN113761840A (zh) * | 2021-09-08 | 2021-12-07 | 中信建投证券股份有限公司 | 智能文档处理方法、系统、计算机设备及介质 |
CN114492346A (zh) * | 2021-12-29 | 2022-05-13 | 深圳市瑞立视多媒体科技有限公司 | 一种基于虚拟引擎的Excel表格数据读取方法及系统 |
CN116757170B (zh) * | 2023-08-21 | 2023-10-20 | 成都数联云算科技有限公司 | 一种基于JAVA语言的Excel表格导入方法和系统 |
CN116757170A (zh) * | 2023-08-21 | 2023-09-15 | 成都数联云算科技有限公司 | 一种基于JAVA语言的Excel表格导入方法和系统 |
CN117910441A (zh) * | 2023-12-18 | 2024-04-19 | 中国人寿保险股份有限公司 | 表格数据提取方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783554A (zh) | excel文档解析方法、装置及计算机可读存储介质 | |
CN110990731B (zh) | 一种静态网页的渲染方法、装置、设备及计算机存储介质 | |
US20200242186A1 (en) | Method and Terminal Device for Extracting Web Page Content | |
CN104185845B (zh) | 用于提供网页的二进制表示的系统和方法 | |
CN106575166B (zh) | 手写输入字符的处理、数据拆分和合并及编解码处理方法 | |
CN117033249B (zh) | 一种测试用例生成方法、装置、计算机设备及存储介质 | |
CN108874464A (zh) | 中间件自动扫描装配方法、装置及存储介质 | |
CN112395843B (zh) | 一种基于php代码的业务处理方法、装置及设备和介质 | |
CN102693238B (zh) | Widget应用方法、系统及多媒体终端 | |
CN110688315A (zh) | 接口代码检测报告生成方法、电子装置及存储介质 | |
CN114996619A (zh) | 一种页面显示的方法、装置、计算机设备及存储介质 | |
CN108536584B (zh) | 一种基于Sikuli的自动化测试方法 | |
MXPA06000813A (es) | Sistema y metodo para almacenar un documento en un formato binario en serie. | |
CN116661789A (zh) | 页面结构转换方法、装置、计算机设备及可读存储介质 | |
CN115794437A (zh) | 微服务的调用方法、装置、计算机设备及存储介质 | |
CN111523065B (zh) | 富文本数据处理方法、装置、电子设备及计算机存储介质 | |
CN113050921A (zh) | 一种网页转换方法、装置、存储介质和计算机设备 | |
CN103458037A (zh) | 一种在资源受限环境下提供复杂网页应用的方法和设备 | |
CN112817595A (zh) | 界面渲染方法、装置、存储介质及电子设备 | |
CN113468836B (zh) | 数据处理方法、装置、存储介质和电子设备 | |
CN115982199A (zh) | 数据查询方法、服务器、设备及存储介质 | |
CN112015400A (zh) | 一种将图形化代码块转换成可执行程序的解析方法 | |
KR101231329B1 (ko) | 모바일 환경에서의 웹 데이터 추출을 위한 시스템 | |
CN102637290A (zh) | 一种基于浏览器的作业系统及编辑方法 | |
CN102129386A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190521 |