CN101968783B - 一种XML文档转换为Excel文档的方法及装置 - Google Patents

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

Info

Publication number
CN101968783B
CN101968783B CN 201010293739 CN201010293739A CN101968783B CN 101968783 B CN101968783 B CN 101968783B CN 201010293739 CN201010293739 CN 201010293739 CN 201010293739 A CN201010293739 A CN 201010293739A CN 101968783 B CN101968783 B CN 101968783B
Authority
CN
China
Prior art keywords
document
excel
text
xml
information
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.)
Expired - Fee Related
Application number
CN 201010293739
Other languages
English (en)
Other versions
CN101968783A (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.)
Wondershare Technology Co ltd
Original Assignee
Shenzhen Wondershare Software Co 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 Shenzhen Wondershare Software Co Ltd filed Critical Shenzhen Wondershare Software Co Ltd
Priority to CN 201010293739 priority Critical patent/CN101968783B/zh
Publication of CN101968783A publication Critical patent/CN101968783A/zh
Application granted granted Critical
Publication of CN101968783B publication Critical patent/CN101968783B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

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

Description

一种XML文档转换为Excel文档的方法及装置
技术领域
本发明属于文档应用领域,具体涉及一种XML文档转换为Excel文档的方法及装置。
背景技术
随着电脑的不断普及,无纸化办公得到越来越多的应用,各种各样的文档也大量的出现在用户的面前。
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作***的电脑而编写和运行的一款试算表软件。
Excel是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
现在业界比较流行的几种XML格式文件转换为Excel格式文件的方案包括:
方案一、调用某些数据库软件提供的API接口生成Excel报表;
方案二、通过调用MS-Excel的自动化Com接口创建Excel报表和数据的写入,生成的次序是建立WorkBook、WorkSheet和写入数据;
方案三、通过调用一些较成熟的开源文档编辑软件的接口实现MS-Excel基本信息的写入,较流行的是调用OpenOffice的应用程序编程接口(Application Programming Interface,API)接口来实现Excel文档的生成。
方案一的缺点:由于大部分数据库软件仅仅提供一些将已知数据转换为基本表格的功能,当碰到单元格合并、表头设置和数据类型设置的情况会无能无力。这种表格不支持公式运算,不符合用户直接编辑运算的需要,用户体验比较差。
方案二的缺点:MS-Excel的Com接口对配置环境和输入数据的格式要求较高,在频繁多次调用的情况下,经常会出现程序挂掉的情况。而且每输入一个单元(Cell)数据都会涉及到一次Com调用,所以此方案的效率较低。而且占用***资源较多,造成机器负载较重。
方案三的缺点:由于xls文件的内部格式没有公开,所以当今一些主流的开源软件对其支持的并不完美,经常会造成元素丢失和排版混乱的情况。
如何在生成Excel文档时减少对Com接口的调用,提高Com调用的效率和稳定性,降低资源占有量,是文档应用领域的方向之一。
发明内容
本发明的目的在于提供一种XML文档转换为Excel文档的方法,目的在于在生成Excel文档时减少对Com接口的调用,提高Com调用的效率和稳定性,降低资源占有量。
本发明实施例是这样实现的,一种XML文档转换为Excel文档的方法,所述方法包括以下步骤:
读取XML文件中的基本元素信息;
将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
按照上述排版结果生成XML2003文档;
调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
本发明实施例的另一目的在于提供一种XML文档转换为Excel文档的装置,所述装置包括:
XML信息读取模块,用于读取XML文件中的基本元素信息;
排版模块,用于将所述XML信息读取模块读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
文档生成模块,用于按照上述排版结果生成XML2003文档;
Excel文档转换模块,用于调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
本发明按照Excel文件的内容和排版生成相同的XML2003文件,完后在后台调用MS-Excel的Com接口一次性的将XML2003文件转换为Excel文件,在生成一个Excel文档的过程中只需要一次Com调用,最大程度上规避了Com调用的低效性和不稳定性,降低了资源占有量。
附图说明
图1为本发明实施例提供的XML文档转换为Excel文档的方法的流程图;
图2为本发明实施例提供的XML文档转换为Excel文档的装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1示出了本发明实施例提供的XML文档转换为Excel文档的方法的流程。
在步骤S101中,读取XML文件中的基本元素信息;
在步骤S102中,将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
在步骤S103中,按照步骤S102中的排版结果生成XML2003文档;
在步骤S104中,调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
其中,所述步骤S101具体描述如下:
首先读取可扩展标记语言(Extensible Markup Language,XML)文件工作簿WorkBook的基本信息,包括作者属性和文档生成日期等,然后读取XML文件各个工作表WorkSheet的信息,最后是读取WorkSheet中的文本信息和文本属性信息等。
其中,所述步骤S102具体描述如下:
步骤A、将文本拆分,增加其参与计算的能力;
譬如:一个基本文本内容为132.22008/03/22,如果将其放置于一个Cell中,此文本将只具有文本属性,没有了数字和日期的属性,但是如果将其拆开放置于两个单元(Cell)中的话,那么一个Cell具有数字属性,另外一个Cell将具有日期属性。
此步骤A的过程为:首先判断本文本块是否被表格线分开,如果此文本块被一表格线穿过,那么就在穿过位置将此文本块分为两块文本,其次以本文本块的大小为输入动态确定一个阀值,如果文本块中的两文本间距大于此阀值,则将此文本块分开。
步骤B、将步骤A处理后的文本进行表格识别;
如果通过特征识别识别到了表格就将表格单独输出处理,如果没有识别到表格就对本页中所有的文本元素进行整体排版。
此步骤B的过程为:首先区分不同表格的表格线,将不同表格的表格线置于不同的闭包中,其次是按照表格线的位置将文本块放置在不同的表格中。
步骤C、识别Cell的线条属性和背景颜色属性。
步骤D、识别文本的类型信息;此处主要识别数字、百分号、日期、时间、货币、分数和科学计数等信息。
其中,所述步骤S103具体包括:
a、生成XML2003文档工作簿WorkBook的文件头信息,此信息主要包括了文件作者、创建时间、版本号和是否加密等信息;
b、生成XML2003文档单元格样式列表;
此列表代表整个工作簿WorkBook中单元格的所有样式,在输入任何一个单元格的时候都要遍历此样式列表,查询是否该单元格样式在此单元格中存在,如果存在则返回该样式在列表中的索引值,如果不存在则在列表中新建该样式的索引并将新建的索引值返回。
c、生成XML2003文档工作表WorkSheet。
每个WorkSheet代表Excel中的一页,在创建一个WorkSheet的时候需要创建Column信息、Row信息和Cell信息。
首先创建Column列表,每个Column代表WorkSheet中的一列,主要需要创建列宽、是否固定列宽和创建列的索引等几部分;
其次需要创建Row列表,每个Row代表WorkSheet中的一行,主要需要创建行高、是否固定行高和行的索引等几部分;
之后是建立Cell对象,Cell对象为WorkSheet中最基本的单元,此步骤分为两个部分,一是合并单元格,二是输入单元格的信息:
合并单元格主要需要确定在水平和垂直方向上需要合并的基本单元格数目,通过比较本单元格占据的区域大小,以及将基本单元格在水平和垂直方向上进行比较,可以确定在水平和垂直方向上需要合并的单元格数目。在得到合并区域后,通过设置Cell的合并标识符,即可达到合并单元格的效果;
单元格的信息输入包括以下几个步骤:一是单元格的样式设置,通过将此单元格的样式和WorkBook的样式列表进行比较,如果此样式在列表中存在,则返回其索引值,如果不存在则在列表中新建该样式并返回索引值,得到索引值后将此索引值设置到Cell的属性列表中;二是单元格的文本排版,首先需要控制单元格中文本的位置属性,主要包括居中、靠左、靠右等几种样式,其次是需要定位文本的位置,水平方向上是使用空格来进行定位,垂直方向上是使用空行来进行定位;三是文本属性的设置,主要包括文本类型的设置、文本颜色和字体字号的设置。
其中,所述步骤S104具体包括:
i、初始化Com环境;
ii、调用Com模块中的工作簿对象WorkBookPtr将XML2003文件导入;
iii、查询注册表得到用户安装的Excel版本信息在根据该版本信息按照规则生成对应版本的Excel文档,生成的规则是如果用户安装了Excel2002和Excel2003则生成xls格式文档,如果用户安装了Excel2007和Excel2010则生成xlsx格式文档;
iv、删除XML2003文件。
本发明通过直接生成XML2003中间文件,规避了频繁的Com调用,提高了文档生成的效率和稳定性。而且文档数据识别为特定类型,可以进行公式运算,提高了用户的效率。且本发明中调用MS-Excel的另存方法,在后台实现XML2003文档到Excel文档的转换,可以支持各种版本Excel文件的生成。
图2示出了本发明实施例提供的XML文档转换为Excel文档的装置的结构,所述装置包括XML信息读取模块21、排版模块22、文档生成模块23以及Excel文档转换模块24。
其中,XML信息读取模块21,用于读取XML文件中的基本元素信息;
排版模块22,用于将所述XML信息读取模块读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
文档生成模块23,用于按照上述排版结果生成XML2003文档;
Excel文档转换模块24,用于调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档。
具体的,所述XML信息读取模块21包括工作簿信息读取模块211和工作表信息读取模块212:
工作簿信息读取模块211,用于读取工作簿WorkBook的基本信息;
工作表信息读取模块212,用于读取各个工作表WorkSheet的信息,以及读取各个工作表WorkSheet中的文本信息和文本属性信息。
所述排版模块22具体包括文本拆分模块221和识别模块222:
文本拆分模块221,用于将文本拆分;
识别模块222,用于将拆分后的文本进行表格识别,以及识别文本类型信息。
所述文档生成模块23具体包括文件头信息生成模块231和列表生成模块232:
文件头信息生成模块231,用于生成工作簿WorkBook的文件头信息;
列表生成模块232,用于生成单元格样式列表,以及生成工作表WorkSheet。
所述Excel文档转换模块24具体包括接口初始化模块241、文件导入模块242、Excel文档生成模块243以及XML文件删除模块244:
接口初始化模块241,用于初始化Com接口;
文件导入模块242,用于调用Com模块中的WorkBookPtr对象将XML2003文件导入;
Excel文档生成模块243,用于完后查询注册表得到用户安装的Excel版本信息,根据该版本信息按照规则生成对应版本的Excel文档;
XML文件删除模块244,用于删除XML2003文件。
本发明按照Excel文件的内容和排版生成相同的XML2003文件,完后在后台调用MS-Excel的Com接口一次性的将XML2003文件转换为Excel文件,在生成一个Excel文档的过程中只需要一次Com调用,最大程度上规避了Com调用的低效性和不稳定性,降低了资源占有量。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (8)

1.一种XML文档转换为Excel文档的方法,其特征在于,所述方法包括以下步骤:
读取XML文件中的基本元素信息;
将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
按照上述排版结果生成XML2003文档;
调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档;
所述将读取的XML文件中的基本元素信息按照Excel的排版格式进行排版的步骤具体包括:
将XML文件中的文本拆分;
将拆分后的文本进行表格识别;
识别文本类型信息;
其中,将XML文件中的文本拆分的步骤还包括:首先判断本文本块是否被表格线分开,如果此文本块被一表格线穿过,那么就在穿过位置将此文本块分为两块文本,其次以本文本块的大小为输入动态确定一个阀值,如果文本块中的两文本间距大于此阀值,则将此文本块分开;
将拆分后的文本进行表格识别的步骤还包括:首先区分不同表格的表格线,将不同表格的表格线置于不同的闭包中,其次是按照表格线的位置将文本块放置在不同的表格中。
2.如权利要求1所述的XML文档转换为Excel文档的方法,其特征在于,所述读取XML文件中的基本元素信息步骤具体包括:
读取XML文件中工作簿WorkBook的基本信息;
读取XML文件中各个工作表WorkSheet的信息;
读取XML文件中各个工作表WorkSheet中的文本信息和文本属性信息。
3.如权利要求1所述的XML文档转换为Excel文档的方法,其特征在于,所述按照排版结果生成XML2003文档的步骤具体包括:
生成XML2003文档的工作簿WorkBook的文件头信息;
生成XML2003文档的单元格样式列表;
生成XML2003文档的工作表WorkSheet。
4.如权利要求1所述的XML文档转换为Excel文档的方法,其特征在于,所述调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档的步骤具体包括:
初始化Com接口;
调用Com模块中的工作簿对象WorkBookPtr将XML2003文件导入;
查询注册表得到用户安装的Excel版本信息,根据该版本信息生成对应版本的Excel文档;
删除XML2003文件。
5.一种XML文档转换为Excel文档的装置,其特征在于,所述装置包括:
XML信息读取模块,用于读取XML文件中的基本元素信息;
排版模块,用于将所述XML信息读取模块读取的XML文件中的基本元素信息按照Excel的排版格式进行排版,获取一排版结果;
文档生成模块,用于按照上述排版结果生成XML2003文档;
Excel文档转换模块,用于调用电子表格工具MS-Excel的Com接口将生成的XML2003文档转换为Excel文档;
其中,所述排版模块具体包括:
文本拆分模块,用于将文本拆分;
识别模块,用于将拆分后的文本进行表格识别,以及识别文本类型信息;
所述文本拆分模块将文本拆分具体包括:判断本文本块是否被表格线分开,如果此文本块被一表格线穿过,那么就在穿过位置将此文本块分为两块文本,并以本文本块的大小为输入动态确定一个阀值,如果文本块中的两文本间距大于此阀值,则将此文本块分开;
所述识别模块将拆分后的文本进行表格识别具体包括:区分不同表格的表格线,将不同表格的表格线置于不同的闭包中,并按照表格线的位置将文本块放置在不同的表格中。
6.如权利要求5所述的XML文档转换为Excel文档的装置,其特征在于,所述XML信息读取模块具体包括:
工作簿信息读取模块,用于读取XML文件中工作簿WorkBook的基本信息;
工作表信息读取模块,用于读取XML文件中各个工作表WorkSheet的信息,以及读取各个工作表WorkSheet中的文本信息和文本属性信息。
7.如权利要求5所述的XML文档转换为Excel文档的装置,其特征在于,所述文档生成模块具体包括:
文件头信息生成模块,用于生成工作簿WorkBook的文件头信息;
列表生成模块,用于生成单元格样式列表,以及生成工作表WorkSheet。
8.如权利要求5所述的XML文档转换为Excel文档的装置,其特征在于,所述Excel文档转换模块具体包括:
接口初始化模块,用于初始化Com接口;
文件导入模块,用于调用Com模块中的工作簿对象WorkBookPtr将XML2003文件导入;
Excel文档生成模块,用于查询注册表得到用户安装的Excel版本信息,根据该版本信息生成对应版本的Excel文档;
XML文件删除模块,用于删除XML2003文件。
CN 201010293739 2010-09-19 2010-09-19 一种XML文档转换为Excel文档的方法及装置 Expired - Fee Related CN101968783B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010293739 CN101968783B (zh) 2010-09-19 2010-09-19 一种XML文档转换为Excel文档的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010293739 CN101968783B (zh) 2010-09-19 2010-09-19 一种XML文档转换为Excel文档的方法及装置

Publications (2)

Publication Number Publication Date
CN101968783A CN101968783A (zh) 2011-02-09
CN101968783B true CN101968783B (zh) 2012-08-08

Family

ID=43547942

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010293739 Expired - Fee Related CN101968783B (zh) 2010-09-19 2010-09-19 一种XML文档转换为Excel文档的方法及装置

Country Status (1)

Country Link
CN (1) CN101968783B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103020089A (zh) * 2011-09-27 2013-04-03 深圳市金蝶友商电子商务服务有限公司 一种将excel文件中的数据导入数据库的方法及装置
CN102508878A (zh) * 2011-10-18 2012-06-20 深圳市共进电子股份有限公司 一种借助机器翻译***生成规范外文页面的方法
CN103729339B (zh) * 2014-01-26 2017-04-05 广州视源电子科技股份有限公司 一种文件转换方法及装置
CN105117378B (zh) * 2015-08-05 2017-10-31 联动优势电子商务有限公司 一种json文件转换为excel文件的方法及装置
CN107844520A (zh) * 2017-10-09 2018-03-27 平安科技(深圳)有限公司 电子装置、车辆数据导入方法及存储介质
CN109543157B (zh) * 2018-10-23 2021-02-05 深圳市海勤科技有限公司 安卓方案osd语言转换方法
CN110162307B (zh) * 2019-04-18 2022-11-11 福建星云电子股份有限公司 一种将json文件转换为dll文件的方法及装置
CN110765741A (zh) * 2019-09-09 2020-02-07 重庆金融资产交易所有限责任公司 数据处理的方法、装置、计算机设备和存储介质
CN111241096A (zh) * 2020-01-07 2020-06-05 中孚安全技术有限公司 一种excel文档的文本提取方法、***、终端及存储介质
CN111898345A (zh) * 2020-07-24 2020-11-06 北京车和家信息技术有限公司 基于详细设计文档的数据处理方法和装置
CN111931471B (zh) * 2020-08-31 2024-04-16 平安银行股份有限公司 表单收集方法、装置、电子设备及存储介质
CN112818642B (zh) * 2021-02-03 2024-02-13 深圳万兴软件有限公司 将pdf文件转换成表格文件的方法、装置及计算机设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520728B (zh) * 2008-02-25 2012-07-04 天津书生投资有限公司 一种第三方软件处理符合文档库标准的文档的方法
CN101430684A (zh) * 2007-11-09 2009-05-13 北大方正集团有限公司 中文办公软件文档与其他格式文档相互转换的方法及装置

Also Published As

Publication number Publication date
CN101968783A (zh) 2011-02-09

Similar Documents

Publication Publication Date Title
CN101968783B (zh) 一种XML文档转换为Excel文档的方法及装置
CN101989256B (zh) 一种文书文件的排版方法及装置
CN101676910B (zh) 一种面向Web应用***的页面生成方法
US10380235B2 (en) Method and system for annotation and connection of electronic documents
CN103324731A (zh) 将电子表格文件转换为网页格式文件的方法和装置
CN101727461B (zh) 一种网页的正文抽取方法
CN101963955B (zh) XML格式文档转换为Word格式文档的***和方法
CN103268340B (zh) 基于层次式索引的版式可回流文件建立和绘制方法
CN102722475A (zh) 一种PDF文档中的表格转换成Excel表格的方法
CN109062567A (zh) 基于b/s结构的信息管理***快速开发平台
CN101706771A (zh) 一种基于模板的针对Word文档的智能格式检查方法
CN103309568A (zh) 一种电子文档批注方法、装置及终端设备
CN101876967A (zh) 一种pdf文本段落生成的方法
CN101908078A (zh) 一种将网页数据导入excel表格的方法和装置
CN107145480A (zh) 一种基于Word进行XBRL报告编制的方法
CN101334730B (zh) 一种报表打印方法
CN103294691A (zh) 一种java环境中基于xml的excel 报表生成方法
CN104572662A (zh) 一种基于智能终端的电子阅读***
CN102902673A (zh) 一种用于动态生成网页的方法和装置
CN100552670C (zh) 一种自动识别数字文档版心的方法
CN100392654C (zh) 一种面向出版的智能模板模型的建立方法
CN101470698A (zh) 一种发文机关标识的排版方法及相应***
CN103365894B (zh) 一种字体格式转换方法和装置
CN109446506A (zh) 一种电子表单表格自动再造的方法和装置
CN104715029A (zh) 一种多渠道发布方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: SHENZHEN WONDERSHARE INFORMATION TECHNOLOGY CO., L

Free format text: FORMER NAME: SHENZHEN WONDERSHARE SOFTWARE CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road TCL A building block 901

Patentee after: SHENZHEN WONDERSHARE INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road TCL A building block 901

Patentee before: WONDERSHARE SOFTWARE Co.,Ltd.

CP03 Change of name, title or address

Address after: 850000 Tibet autonomous region, Lhasa City, New District, west of the East Ring Road, 1-4 road to the north, south of 1-3 Road, Liu Dong building, east of the 8 unit 6, floor 2, No.

Patentee after: WONDERSHARE TECHNOLOGY CO.,LTD.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road TCL A building block 901

Patentee before: SHENZHEN WONDERSHARE INFORMATION TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120808

CF01 Termination of patent right due to non-payment of annual fee