首页 / 专利库 / 软件 / 版本化 / 一种XML文档转换为Excel文档的方法及装置

一种XML文档转换为Excel文档的方法及装置

阅读:300发布:2024-02-18

专利汇可以提供一种XML文档转换为Excel文档的方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 属于文档应用领域,公开了一种XML文档转换为Excel文档的方法及装置,所述方法包括:读取XML文件中的基本元素信息;将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;按照上述排版结果生成XML2003文档;调用 电子 表格工具MS-Excel的Com 接口 将生成的XML2003文档转换为Excel文档。本发明在生成一个Excel文档的过程中只需要一次Com调用,最大程度上规避了Com调用的低效性和不 稳定性 ,降低了资源占有量。,下面是一种XML文档转换为Excel文档的方法及装置专利的具体信息内容。

1.一种XML文档转换为Excel文档的方法,其特征在于,所述方法包括以下步骤:
读取XML文件中的基本元素信息;
将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
按照上述排版结果生成XML2003文档;
调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
2.如权利要求1所述的XML文档转换为Excel文档的方法,其特征在于,所述读取XML文件中的基本元素信息步骤具体包括:
读取XML文件中工作簿WorkBook的基本信息;
读取XML文件中各个工作表WorkSheet的信息;
读取XML文件中各个工作表WorkSheet中的文本信息和文本属性信息
3.如权利要求1所述的XML文档转换为Excel文档的方法,其特征在于,所述将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版的步骤具体包括:
将XML文件中的文本拆分;
将拆分后的文本进行表格识别;
识别文本类型信息。
4.如权利要求1所述的XML文档转换为Excel文档的方法,其特征在于,所述按照排版结果生成XML2003文档的步骤具体包括:
生成XML2003文档的工作簿WorkBook的文件头信息;
生成XML2003文档的单元格样式列表;
生成XML2003文档的工作表WorkSheet。
5.如权利要求1所述的XML文档转换为Excel文档的方法,其特征在于,所述调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档的步骤具体包括:
初始化Com接口;
调用Com模中的工作簿对象WorkBookPtr将XML2003文件导入;
查询注册表得到用户安装的Excel版本信息,根据该版本信息生成对应版本的Excel文档;
删除XML2003文件。
6.一种XML文档转换为Excel文档的装置,其特征在于,所述装置包括:
XML信息读取模块,用于读取XML文件中的基本元素信息;
排版模块,用于将所述XML信息读取模块读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
文档生成模块,用于按照上述排版结果生成XML2003文档;
Excel文档转换模块,用于调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
7.如权利要求6所述的XML文档转换为Excel文档的装置,其特征在于,所述XML信息读取模块具体包括:
工作簿信息读取模块,用于读取XML文件中工作簿WorkBook的基本信息;
工作表信息读取模块,用于读取XML文件中各个工作表WorkSheet的信息,以及读取各个工作表WorkSheet中的文本信息和文本属性信息。
8.如权利要求6所述的XML文档转换为Excel文档的装置,其特征在于,所述排版模块具体包括:
文本拆分模块,用于将文本拆分;
识别模块,用于将拆分后的文本进行表格识别,以及识别文本类型信息。
9.如权利要求6所述的XML文档转换为Excel文档的装置,其特征在于,所述文档生成模块具体包括:
文件头信息生成模块,用于生成工作簿WorkBook的文件头信息;
列表生成模块,用于生成单元格样式列表,以及生成工作表WorkSheet。
10.如权利要求6所述的XML文档转换为Excel文档的装置,其特征在于,所述Excel文档转换模块具体包括:
接口初始化模块,用于初始化Com接口;
文件导入模块,用于调用Com模块中的工作簿对象WorkBookPtr将XML2003文件导入;
Excel文档生成模块,用于查询注册表得到用户安装的Excel版本信息,根据该版本信息生成对应版本的Excel文档;
XML文件删除模块,用于删除XML2003文件。

说明书全文

一种XML文档转换为Excel文档的方法及装置

技术领域

[0001] 本发明属于文档应用领域,具体涉及一种XML文档转换为Excel文档的方法及装置。

背景技术

[0002] 随着电脑的不断普及,无纸化办公得到越来越多的应用,各种各样的文档也大量的出现在用户的面前。
[0003] Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。
[0004] Excel是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
[0005] 现在业界比较流行的几种XML格式文件转换为Excel格式文件的方案包括:
[0006] 方案一、调用某些数据库软件提供的API接口生成Excel报表;
[0007] 方案二、通过调用MS-Excel的自动化Com接口创建Excel报表和数据的写入,生成的次序是建立WorkBook、WorkSheet和写入数据;
[0008] 方案三、通过调用一些较成熟的开源文档编辑软件的接口实现MS-Excel基本信息的写入,较流行的是调用OpenOffice的应用程序编程接口(Application Programming Interface,API)接口来实现Excel文档的生成。
[0009] 方案一的缺点:由于大部分数据库软件仅仅提供一些将已知数据转换为基本表格的功能,当碰到单元格合并、表头设置和数据类型设置的情况会无能无。这种表格不支持公式运算,不符合用户直接编辑运算的需要,用户体验比较差。
[0010] 方案二的缺点:MS-Excel的Com接口对配置环境和输入数据的格式要求较高,在频繁多次调用的情况下,经常会出现程序挂掉的情况。而且每输入一个单元(Cell)数据都会涉及到一次Com调用,所以此方案的效率较低。而且占用系统资源较多,造成机器负载较重。
[0011] 方案三的缺点:由于xls文件的内部格式没有公开,所以当今一些主流的开源软件对其支持的并不完美,经常会造成元素丢失和排版混乱的情况。
[0012] 如何在生成Excel文档时减少对Com接口的调用,提高Com调用的效率和稳定性,降低资源占有量,是文档应用领域的方向之一。

发明内容

[0013] 本发明的目的在于提供一种XML文档转换为Excel文档的方法,目的在于在生成Excel文档时减少对Com接口的调用,提高Com调用的效率和稳定性,降低资源占有量。
[0014] 本发明实施例是这样实现的,一种XML文档转换为Excel文档的方法,所述方法包括以下步骤:
[0015] 读取XML文件中的基本元素信息;
[0016] 将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
[0017] 按照上述排版结果生成XML2003文档;
[0018] 调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
[0019] 本发明实施例的另一目的在于提供一种XML文档转换为Excel文档的装置,所述装置包括:
[0020] XML信息读取模,用于读取XML文件中的基本元素信息;
[0021] 排版模块,用于将所述XML信息读取模块读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
[0022] 文档生成模块,用于按照上述排版结果生成XML2003文档;
[0023] Excel文档转换模块,用于调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
[0024] 本发明按照Excel文件的内容和排版生成相同的XML2003文件,完后在后台调用MS-Excel的Com接口一次性的将XML2003文件转换为Excel文件,在生成一个Excel文档的过程中只需要一次Com调用,最大程度上规避了Com调用的低效性和不稳定性,降低了资源占有量。附图说明
[0025] 图1为本发明实施例提供的XML文档转换为Excel文档的方法的流程图
[0026] 图2为本发明实施例提供的XML文档转换为Excel文档的装置的结构图。

具体实施方式

[0027] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0028] 图1示出了本发明实施例提供的XML文档转换为Excel文档的方法的流程。
[0029] 在步骤S101中,读取XML文件中的基本元素信息;
[0030] 在步骤S102中,将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
[0031] 在步骤S103中,按照步骤S102中的排版结果生成XML2003文档;
[0032] 在步骤S104中,调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
[0033] 其中,所述步骤S101具体描述如下:
[0034] 首先读取可扩展标记语言(Extensible Markup Language,XML)文件工作簿WorkBook的基本信息,包括作者属性和文档生成日期等,然后读取XML文件各个工作表WorkSheet的信息,最后是读取WorkSheet中的文本信息和文本属性信息等。
[0035] 其中,所述步骤S102具体描述如下:
[0036] 步骤A、将文本拆分,增加其参与计算的能力;
[0037] 譬如:一个基本文本内容为132.22008/03/22,如果将其放置于一个Cell中,此文本将只具有文本属性,没有了数字和日期的属性,但是如果将其拆开放置于两个单元(Cell)中的话,那么一个Cell具有数字属性,另外一个Cell将具有日期属性。
[0038] 此步骤A的过程为:首先判断本文本块是否被表格线分开,如果此文本块被一表格线穿过,那么就在穿过位置将此文本块分为两块文本,其次以本文本块的大小为输入动态确定一个值,如果文本块中的两文本间距大于此阀值,则将此文本块分开。
[0039] 步骤B、将步骤A处理后的文本进行表格识别;
[0040] 如果通过特征识别识别到了表格就将表格单独输出处理,如果没有识别到表格就对本页中所有的文本元素进行整体排版。
[0041] 此步骤B的过程为:首先区分不同表格的表格线,将不同表格的表格线置于不同的闭包中,其次是按照表格线的位置将文本块放置在不同的表格中。
[0042] 步骤C、识别Cell的线条属性和背景颜色属性。
[0043] 步骤D、识别文本的类型信息;此处主要识别数字、百分号、日期、时间、货币、分数和科学计数等信息。
[0044] 其中,所述步骤S103具体包括:
[0045] a、生成XML2003文档工作簿WorkBook的文件头信息,此信息主要包括了文件作者、创建时间、版本号和是否加密等信息;
[0046] b、生成XML2003文档单元格样式列表;
[0047] 此列表代表整个工作簿WorkBook中单元格的所有样式,在输入任何一个单元格的时候都要遍历此样式列表,查询是否该单元格样式在此单元格中存在,如果存在则返回该样式在列表中的索引值,如果不存在则在列表中新建该样式的索引并将新建的索引值返回。
[0048] c、生成XML2003文档工作表WorkSheet。
[0049] 每个WorkSheet代表Excel中的一页,在创建一个WorkSheet的时候需要创建Column信息、Row信息和Cell信息。
[0050] 首先创建Column列表,每个Column代表WorkSheet中的一列,主要需要创建列宽、是否固定列宽和创建列的索引等几部分;
[0051] 其次需要创建Row列表,每个Row代表WorkSheet中的一行,主要需要创建行高、是否固定行高和行的索引等几部分;
[0052] 之后是建立Cell对象,Cell对象为WorkSheet中最基本的单元,此步骤分为两个部分,一是合并单元格,二是输入单元格的信息:
[0053] 合并单元格主要需要确定在平和垂直方向上需要合并的基本单元格数目,通过比较本单元格占据的区域大小,以及将基本单元格在水平和垂直方向上进行比较,可以确定在水平和垂直方向上需要合并的单元格数目。在得到合并区域后,通过设置Cell的合并标识符,即可达到合并单元格的效果;
[0054] 单元格的信息输入包括以下几个步骤:一是单元格的样式设置,通过将此单元格的样式和WorkBook的样式列表进行比较,如果此样式在列表中存在,则返回其索引值,如果不存在则在列表中新建该样式并返回索引值,得到索引值后将此索引值设置到Cell的属性列表中;二是单元格的文本排版,首先需要控制单元格中文本的位置属性,主要包括居中、靠左、靠右等几种样式,其次是需要定位文本的位置,水平方向上是使用空格来进行定位,垂直方向上是使用空行来进行定位;三是文本属性的设置,主要包括文本类型的设置、文本颜色和字体字号的设置。
[0055] 其中,所述步骤S104具体包括:
[0056] i、初始化Com环境;
[0057] ii、调用Com模块中的工作簿对象WorkBookPtr将XML2003文件导入;
[0058] iii、查询注册表得到用户安装的Excel版本信息在根据该版本信息按照规则生成对应版本的Excel文档,生成的规则是如果用户安装了Excel2002和Excel2003则生成xls格式文档,如果用户安装了Excel2007和Excel2010则生成xlsx格式文档;
[0059] iv、删除XML2003文件。
[0060] 本发明通过直接生成XML2003中间文件,规避了频繁的Com调用,提高了文档生成的效率和稳定性。而且文档数据识别为特定类型,可以进行公式运算,提高了用户的效率。且本发明中调用MS-Excel的另存方法,在后台实现XML2003文档到Excel文档的转换,可以支持各种版本Excel文件的生成。
[0061] 图2示出了本发明实施例提供的XML文档转换为Excel文档的装置的结构,所述装置包括XML信息读取模块21、排版模块22、文档生成模块23以及Excel文档转换模块24。
[0062] 其中,XML信息读取模块21,用于读取XML文件中的基本元素信息;
[0063] 排版模块22,用于将所述XML信息读取模块读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
[0064] 文档生成模块23,用于按照上述排版结果生成XML2003文档;
[0065] Excel文档转换模块24,用于调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
[0066] 具体的,所述XML信息读取模块21包括工作簿信息读取模块211和工作表信息读取模块212:
[0067] 工作簿信息读取模块211,用于读取工作簿WorkBook的基本信息;
[0068] 工作表信息读取模块212,用于读取各个工作表WorkSheet的信息,以及读取各个工作表WorkSheet中的文本信息和文本属性信息。
[0069] 所述排版模块22具体包括文本拆分模块221和识别模块222:
[0070] 文本拆分模块221,用于将文本拆分;
[0071] 识别模块222,用于将拆分后的文本进行表格识别,以及识别文本类型信息。
[0072] 所述文档生成模块23具体包括文件头信息生成模块231和列表生成模块232:
[0073] 文件头信息生成模块231,用于生成工作簿WorkBook的文件头信息;
[0074] 列表生成模块232,用于生成单元格样式列表,以及生成工作表WorkSheet。
[0075] 所述Excel文档转换模块24具体包括接口初始化模块241、文件导入模块242、Excel文档生成模块243以及XML文件删除模块244:
[0076] 接口初始化模块241,用于初始化Com接口;
[0077] 文件导入模块242,用于调用Com模块中的WorkBookPtr对象将XML2003文件导入;
[0078] Excel文档生成模块243,用于完后查询注册表得到用户安装的Excel版本信息,根据该版本信息按照规则生成对应版本的Excel文档;
[0079] XML文件删除模块244,用于删除XML2003文件。
[0080] 本发明按照Excel文件的内容和排版生成相同的XML2003文件,完后在后台调用MS-Excel的Com接口一次性的将XML2003文件转换为Excel文件,在生成一个Excel文档的过程中只需要一次Com调用,最大程度上规避了Com调用的低效性和不稳定性,降低了资源占有量。
[0081] 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而这些改进和变换都应属于本发明所附权利要求的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈