一种解析Word文件信息的方法及其***
技术领域
本发明涉及可读取、解析Word文件信息的***领域,更具体的说,改进涉及的是一种解析Word文件信息的方法及其***。
背景技术
Microsoft Word是微软公司的一个文字处理应用程序,在办公自动化中,Microsoft Word得到了越来越多的应用。然而,在自动化办公应用非常广泛的今天,经常需要读取并甄别有用信息,如何成批、快速的实现对Word文档的解析,将直接影响到人们的办公效率。
目前业界经常使用的解析Word文件的方法大致有以下几种:
方案一、通过调用MS-Word的自动化Com接口,按照Word的文档结构对Word文件信息进行解析。
方案二、通过调用一些较为成熟的开源文档编辑软件的接口,实现对Word文件信息的解析,较流行的是调用OpenOffice的API接口来实现读取和解析。
方案三、由于Word2007文件已公开格式,所以可以直接对Word2007格式文件进行解析。
但是,对于方案一而言,每解析一个Word元素就需要一次Com调用,所以解析过程的效率和稳定性较低;另外,当解析的属性Word对象没有设置值的时候,如果继续解析,会造成程序挂掉,因此直接影响程序的稳定性。
对于方案二而言,由于Open-Office等开源软件对doc格式的文档支持并不完美,所以当解析一些比较复杂的元素时,会出现属性丢失的情况。
对于方案三而言,此种方法仅能支持docx文档;由于doc文件的格式并没有公开,所以此方法无法解析Word2003格式文件和Word2000格式文件,对Word文件的版本支持不完全。
因此,现有技术尚有待改进和发展。
发明内容
本发明的目的在于,提供一种解析Word文件信息的方法及其***,可高效稳定地解析所有格式的Word文件信息,适合批量解析各种版本的Word文件信息。
本发明的技术方案如下:
一种解析Word文件信息的方法,其中,包括以下步骤:
将待解析的Word文件转换为Word_XML2003格式文档的中间文件;
解析Word_XML2003格式文档中元素的基本信息,并将解析得到的信息按照Word的规则进行组合;
将解析组合后的对象写入XML文件。
所述的解析Word文件信息的方法,其中,在转换为Word_XML2003格式文档的步骤中,具体包括以下步骤:
初始化Word对象;
通过Word实例对象创建一个Word文档对象;
将Word对象设置为后台运行;
使用文档对象导入一个Word文件;
将Word格式文档另存为XML2003格式文档。
所述的解析Word文件信息的方法,其中,在解析Word_XML2003格式文档的步骤中,对于文本信息,还包括先读取文本,后按照段落为基本单位将文档分为若干个段落节点的操作。
所述的解析Word文件信息的方法,其中,在解析Word_XML2003格式文档的步骤中,对于图元信息,还包括在图元字段按照直线、椭圆、矩形的图元不同的枚举值得到图元的起始坐标和区域的操作。
所述的解析Word文件信息的方法,其中,在解析Word_XML2003格式文档的步骤中,对于图像信息,还包括先在binData读出图片的文件流,后利用图片库将该图片流写出的操作。
所述的解析Word文件信息的方法,其中,在按照Word的规则进行组合的步骤中,对于文本,还包括以下操作:
将解析Word_XML2003格式文档得到的基本段落信息按照节为单位进行分组;
将节中的文本按照栏为单位进行进一步划分。
所述的解析Word文件信息的方法,其中,在按照Word的规则进行组合的步骤中,对于图元,还包括以下操作:
根据图元所在的段位于的节,判断该图元的节号;
将该图元设置为该节的背景元素。
所述的解析Word文件信息的方法,其中,在按照Word的规则进行组合的步骤中,对于图像,还包括以下操作:
根据图像所在的段位于的节,判断该图像的节号;
将该图像设置为该节的背景元素。
一种解析Word文件信息的***,其中:包括依次数据连接的XML2003文件转换模块、解析排版模块和XML文件写入模块,其中:
XML2003文件转换模块,用于将待解析的Word文件转换为Word_XML2003格式文档的中间文件;
解析排版模块,用于解析Word_XML2003格式文档中元素的基本信息,并将解析得到的信息按照Word的规则进行组合;
XML文件写入模块,用于将解析组合后的对象写入XML文件。
所述的解析Word文件信息的***,其中,XML2003文件转换模块包括依次数据连接的初始化单元、文档创建单元、设置单元、导入单元和生成单元,其中:
初始化单元,用于初始化Word对象;
文档创建单元,用于通过Word实例对象创建一个Word文档对象;
设置单元,用于将Word对象设置为后台运行;
导入单元,用于使用文档对象导入一个Word文件;
生成单元,用于将Word格式文档另存为XML2003格式文档。
本发明所提供的一种解析Word文件信息的方法及其***,由于采用了Word_XML2003格式文档作为中间文件,并在解析Word_XML2003格式文档后按照Word的规则进行组合,不仅在解析比较复杂的元素时不会造成属性丢失,而且还避免了频繁的调用Com接口,节约了***资源,从而高效稳定地解析了所有格式的Word文件信息,特别适合满足需要批量解析各种版本的Word文件信息的情况下使用。
附图说明
图1是本发明解析Word文件信息方法的流程图;
图2是本发明解析Word文件信息***的结构图;
图3是本发明中XML2003文件转换模块的结构图;
图4是本发明中将Word文件转换为Word_XML2003格式文档的流程图;
图5是本发明中解析XML2003元素以及整体排版的流程图。
具体实施方式
以下将结合附图,对本发明的具体实施方式和实施例加以详细说明,所描述的具体实施例仅用以解释本发明,并非用于限定本发明的具体实施方式。
本发明的一种解析Word文件信息的方法,其具体实施方式之一,如附图1所示,包括以下步骤:
步骤S100、将待解析的Word文件转换为Word_XML2003格式文档的中间文件;
步骤S200、解析Word_XML2003格式文档中元素的基本信息,并将解析得到的信息按照Word的规则进行组合;
步骤S300、将解析组合后的对象写入XML(Extensible MarkupLanguage,可扩展标记语言)文件。
基于上述解析方法,本发明还提出了一种解析Word文件信息的***,如附图2所示,至少包括依次数据连接的XML2003文件转换模块100、解析排版模块200和XML文件写入模块300,其中:
XML2003文件转换模块100,用于将待解析的Word文件转换为Word_XML2003格式文档的中间文件;
解析排版模块200,用于解析Word_XML2003格式文档中元素的基本信息,并将解析得到的信息按照Word的规则进行组合;
XML文件写入模块300,用于将解析组合后的对象写入XML文件。
Word的XML2003文件是一种可以记录Word元素的XML文件,由于此文件支持Word所有元素的显示,而且可以被Word文件打开。基于这个原因,可以考虑以XML2003文件作为中间文件进行Word文件信息解析的策略。可先用Word的自动化Com接口在后台将需要解析的Word文档另存为XML2003格式文件,之后再使用XML解析器对该文件进行解析。这样做的好处在于,一是只调用了一次Com接口,提高了***的效率和稳定性,二是同时可以支持doc格式文件和docx格式文件的解析。
作为本发明解析Word文件信息的方法及其***的优选实施方式:
1、在步骤S100中,XML2003文件转换模块100先初始化MS_Word的Com接口,再在后台将Word文件导入,如*.doc或*.docx文件;之后将该Word文件另存为Word_XML2003格式文件。具体的,如附图3所示,XML2003文件转换模块100包括依次数据连接的初始化单元110、文档创建单元120、设置单元130、导入单元140和生成单元150,其中,如附图4所示,步骤S100可包括以下步骤:
步骤S110、初始化单元110初始化Word对象,如:实例化一个Word程序对象ApplicationPtr等;
步骤S120、文档创建单元120创建文档对象,如:通过Word实例对象创建一个Word文档对象DocumentPtr等;
步骤S 130、设置单元130设置Word后台运行,即,将Word对象设置为后台运行;
步骤S140、导入单元140导入Word格式文档,如:使用文档对象导入一个Word文件;
步骤S150、生成单元150在后台将Word格式文档另存为XML2003格式文档。
2、在步骤S200中,解析排版模块200先提取并获得文本、图元和图像等基本信息,再进行整体的排版。
在提取过程中,对于文本信息,首先读取文本,然后按照段落为基本单位将文档分为若干个段落节点;对于图元信息,可在图元字段按照直线、椭圆、矩形的图元不同的枚举值得到图元的起始坐标和区域;对于图像信息,由于图像在XML2003中都以文件流的形式存在,所以需要在binData读出图片的文件流,完后利用图片库将该图片流写出;binData为本领域技术名词。提取的过程可包括:读取文档属性字段DocumentProperties,得到本文档的作者、版本号、页数等信息;读取段落样式列表得到此文档中使用的段落样式类型;读取文档显示属性字段,得到文档的显示比例等信息。
在整体排版时,对于文本而言,首先,可将上文得到的基本段落信息按照节为单位进行分组,这样就将文本分为了若干个节,其次,需要将节中的文本按照栏为单位进行进一步划分;对于图元和/或图像而言,由于图元和图像分别位于不同的段中,所以可以根据该图元和/或图像所在的段位于的节,来判断该图元和/或图像在哪个节中,并在得到节号后,就将该图元和/或图像设置为该节的背景元素。
具体的,如附图5所示,步骤S200可包括以下步骤:
步骤S210、在开始解析之时,读取文档属性字段DocumentProperties,得到本文档的作者、版本号、页数等信息;
步骤S220、读取段落式样字段,如:段落式样列表,得到此文档中使用的段落样式类型;
步骤S230、输入排版信息,如:读取文档显示属性字段,得到文档的显示比例等信息;
步骤S240、按照段落为单位,读取每个段落的内容;
步骤S250、将段落合并为节,可按照段落为基本单位将文档分为若干个段落节点;
步骤S260、将节的内容分为栏,可先将上文得到的基本段落信息按照节为单位进行分组,再将节中的文本按照栏为单位进行进一步划分;
步骤S272、读取图元,可在图元字段按照直线、椭圆、矩形的图元不同的枚举值得到图元的起始坐标和区域;
步骤S274、读取图像,在binData读出图片的文件流后,利用图片库将该图片流写出;
步骤S280、将图像的二进制信息写入文件;
步骤S290、将图元、图像和文本进行整体排版。
3、在步骤S300中,XML文件写入模块300在将解析到的对象写入XML文件的过程中,可将一个整个文档结构放入一个文件<Document>结构中,文档结构中分为文件属性节点<DocumentAttr>、参数属性节点<ParaAttr>、选项节点<Sect>;其中,选项节点<Sect>又细分为列子节点<Column>、背景图元子节点<Graphic>和背景图像子节点<Pic>,具体结构可如下所示:
<Document>
<DocumentAttr></DocumentAttr>
<ParaAttr></ParaAttr>
<Sect1>
<Column1>
<Para1></Para1>
<Para2></Para2>
……
</Column1>
<Graphic1></Graphic2>
<Graphic2></Graphics2>
……
<Pic1></Pic1>
<Pic2></Pic2>
……
</Sect1>
<Sect2>
</Sect2>
……
</Document>
本发明所提供的一种解析Word文件信息的方法及其***,由于采用了Word_XML2003格式文档作为中间文件,并在解析Word_XML2003格式文档后按照Word的规则进行组合,不仅在解析比较复杂的元素时不会造成属性丢失,而且还避免了频繁的调用Com接口,节约了***资源,从而高效稳定地解析了所有格式的Word文件信息,特别适合满足需要批量解析各种版本的Word文件信息的情况下使用。
应当理解的是,以上所述仅为本发明的较佳实施例而已,并不足以限制本发明的技术方案,对本领域普通技术人员来说,在本发明的精神和原则之内,可以根据上述说明加以增减、替换、变换或改进,而所有这些增减、替换、变换或改进后的技术方案,都应属于本发明所附权利要求的保护范围。