CN103309849B - 一种基于OpenXML的docx文档创建和修改方法 - Google Patents
一种基于OpenXML的docx文档创建和修改方法 Download PDFInfo
- Publication number
- CN103309849B CN103309849B CN201310280580.XA CN201310280580A CN103309849B CN 103309849 B CN103309849 B CN 103309849B CN 201310280580 A CN201310280580 A CN 201310280580A CN 103309849 B CN103309849 B CN 103309849B
- Authority
- CN
- China
- Prior art keywords
- document
- docx
- user
- xml file
- docx 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.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种基于OpenXML的创建docx文档和将格式不整齐的docx文档转换成所需格式的docx文档的方法。本方法共有四个步骤,分别是文档及格式读取步骤,所需格式生成步骤,格式修改步骤和新文档创建步骤。本发明第一步需要获得用户的格式需求,以及需要修改还是生成新的docx文档;第二步按照用户的格式需求生成特定XML文件,如果用户需要创建docx文档,则还需要生成除了特定XML文件以外的其他构成docx文档的XML文件;第三步如果需要修改格式,则只是根据第二步中生成的XML文件修改原docx文档中的该XML文件;第四步则是生成新的docx文档。本发明通过对XML文件的生成和标签修改实现了对docx文档的生成和格式修改,具有速度快,效率高,减少人工失误率及节省用户时间的优点。
Description
技术领域
本发明涉及一种文档的创建和格式修改的方法,尤其涉及一种基于OpenXML的docx文档创建和格式修改方法。
背景技术
近年来,随着电子化办公逐渐普及,以及论文的撰写逐渐增加,人们对于Office工具的使用也越来越多。然而人们花在文档格式修改上的时间占据了相当一部分的文档完成时间,有时甚至是绝大部分,这样造成了时间、人力及物力大量的浪费。对于很多具有固定撰写模版的文档,如果用户可以提前定制好模板,就不用花费时间在修正格式方面,而是在内容修饰方面,从而可以大大节省时间,提高文档内容的水平。
EcmaOfficeOpenXML("OpenXML")是针对字处理文档、演示文稿和电子表格的国际化开放标准,可免费供多个应用程序在多个平台上实现。MicrosoftOffice(2007、2003、XP、2000)、OpenOfficeNovellEdition、开源项目Gnumeric、Neo-Office2.1和PalmOS(Dataviz)已经支持OpenXML。OpenXML的标准化工作是由EcmaInternational通过其技术委员会45(TC45)执行的,来自Apple、BarclaysCapital、BP、TheBritishLibrary、Essilor、Intel、Microsoft、NextPage、Novell、Statoil、Toshiba和UnitedStatesLibraryofCongress的代表参与了该项工作。该标准旨在提供现有ISO标准所无法提供的独特好处,其中包括能够实现从现有二进制格式向基于XML的格式的高保真移植。
由于docx格式文档使用OpenXML的规范控制格式,因此对于要求文档具有基本固定格式的创建和修改,可以不使用人工创建和修改的方式,而是通过创建和修改其对应的XML格式文件的方式实现对文档格式控制的自动化处理。
发明内容
为克服上述现有技术的不足,本发明提出一种基于OpenXML的docx文档创建和修改方法。
本发明所采用的技术方案是:通过对组成docx文档的XML文件的创建和标签修改实现对docx文档的创建和格式修改。
本发明将处理过程设计成如下四个步骤:文档及格式读取步骤,所需格式生成步骤,格式修改步骤和新文档创建步骤。
如图1是对程序中整个流程的图表化的展示,是从用户对格式需求的输入到格式规整的docx文档的输出的整个程序运行过程的表示。下面将对每个步骤进行简单的说明。
文档及格式读取步骤:本方法需要用户首先输入最终欲生成docx文档的格式,如果用户没有输入对应格式的需求,则本方法会默认为用户产生一个模版。表1则是用户需要在命令行中输入的部分重要的格式信息。待用户输入完毕,还需要选择生成全新的文档还是修改已经存在的docx文档的格式,如果生成全新的文档,则用户还需要将文档的文字单独录入;如果修改已经存在的docx文档的格式,则上传原docx文档即可。
所需格式生成步骤:根据用户输入的格式信息,本方法生成一份用于描述该格式的XML文件,其中用户没有定义的格式信息则按照默认格式信息处理。如果用户没有提供格式不整齐的原docx文档而需要生成新的文档,则还需要单独生成一些docx文档特有的XML文件,例如控制不同文件关系的XML文件和表示作者版权等信息的XML文件等。
格式修改步骤:如果用户提供了格式不整齐的docx文档,则本方法需要将用户输入的格式与现有docx文档中控制格式的word/document.xml文件进行对比,如果用户原来XML文件多添加了标签,则将其删除;如果原来XML文件用错了标签,则将其修改;如果原来XML文件少了标签,则将其加上。
新文档创建步骤:如果用户没有提供格式不整齐的docx文档,则将格式修改步骤中生成的所有XML文件按照docx文档的形式整合并且生成新的docx文档,如果用户提供了格式不整齐的docx文档,则将格式修改步骤中生成的XML文件替换用户提供的docx文档中的对应XML文件即可。
与现有技术相比,本发明的有益效果是大大提高了批量处理相同格式docx文档的效率,节省了用户大量的时间,同时,与目前存在的使用COM组件处理docx文档的方法比较,本发明使用了Java语言来处理,可以更加灵活方便的处理到每一个标签。
附图说明
图1为本方法处理过程流程图。
图2为示例文字生成的DOM树。
图3为格式修改步骤的流程图。
具体实施方式
下面结合附图对本发明进行进一步说明。
1、文档及格式读取步骤
文档及格式读取步骤是本方法获得用户对文档格式需求的步骤。在本步骤中,用户通过命令行参数的输入传入文档的格式参数,例如标题的格式,段落的格式,每个段落中文字的格式,页眉页脚的格式等等,相关命令参数参考表1。通过本步骤,本方法可以获得用户对格式的需求,如果相关格式没有被用户指定,本方法会默认指定一种文档格式。同时此步骤还会记录用户需要生成全新的docx文档还是传入格式不整齐的docx文档进行格式修改。
表1格式输入命令及功能
2、所需格式生成步骤
所需格式生成步骤是生成XML文件的步骤。无论用户需要生成全新的docx文档还是传入格式不整齐的docx文档,都需要生成word/document.xml文件,这里使用的XML文件中的标签都是微软公开可以使用的标签,例如<w:document></w:document>是word/document.xml文件的根元素,<w:body></w:body>是文档的文档体,<w:p></w:p>是一个新段落,<w:r></w:r>表示同一范围内分享相同的特性集,<w:t></w:t>定义了一个范围的文本等等。
如果用户需要生成全新的docx文档,则本方法还会为用户生成其他的XML文件,例如表示不同XML文件之间关联的XML控制文件,以及显示作者版权信息的XML文件。
3、格式修改步骤
格式修改步骤主要是在用户输入格式不整齐的docx文档时会进入的步骤。本步骤使用Java语言处理word/document.xml文件,因此有两种选择,SAX解析和DOM解析。
在SAX解析器装载XML文件时,它遍历文件文档并在其主机应用程序中产生事件(经由回调函数、指派函数或者任何可调用平台完成这一功能)表示这一过程。SAX解析器在某些方面优于DOM风格解析器。SAX解析器的内存使用量一般远低于DOM解析器使用量。DOM解析器在任何处理开始之前,必须把整棵树放在内存,所以DOM解析器的内存使用量完全根据输入资料的大小。相对来说,SAX解析器的内存内容,是只基于XML档案的最大深度(XML树的最大深度)和单一XML项目上XML属性储存的最大资料。这两个总是比整棵析树本身还小。
DOM(DocumentObjectModel)解析方法,即文档对象模型,可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。
SAX最大的缺点是不允许对XML文件进行随机访问,这对于频繁修改标签的本方法来说,是非常不利的,而且一般的docx文档不会特别的庞大,使用DOM方式明显优于SAX方式,因此本方法采用DOM解析方式来读取XML文件。
图2显示的是一段最简单的文字”HelloOpenXML”在DOM树中的表示。
在用户提供给本方法docx文档后,程序会需要用户输入对于格式的要求,根据用户的定制,将读取到的XML文档的文档树和标准DOM树进行对比,修改不标准的文档树。遇到缺失的格式标签进行补全,遇到使用错误的格式标签进行修改,遇到使用冗余的标签进行删除,通过循环这些操作,完成对整个XML文档的扫描和修改。图3所示为格式修改步骤的流程图。
4、新文档创建步骤
如果用户输入了格式不整齐的docx文档,则经过格式修改模块后,新的word/document.xml文件已经完全符合用户对于格式的需求。在新文档创建步骤中,本方法将新的word/document.xml文件和其余的XML文件重新整合,并且压缩生成新的zip文件。最后通过格式的转换,生成新的docx文件返回给用户。同时第一个步骤中还保留了用户转换前的文档,将两个文档均返回给用户,供用户比较使用。如果用户没有输入任何docx文档,而是需要生成全新的docx文档,则新文档创建步骤中为用户将第二步中生成的word/document.xml文件和其余组成docx文档所必须的XML文件一起按照docx文档的打包格式一起压缩成全新的zip文件,并且将文件转换成docx文档返回给用户。至此已经完成了基于OpenXML的docx文档创建和修改方法的所有过程。
Claims (1)
1.一种基于OpenXML的docx文档创建和修改方法,其特征在于以下步骤,
1)文档及格式读取:用户首先输入最终欲生成docx文档的格式,如果用户没有输入对应格式的需求,则默认为用户产生一个模版;待用户输入完毕,还需要选择生成全新的文档还是修改已经存在的docx文档的格式,如果生成全新的文档,则用户还需要将文档的文字单独录入;如果修改已经存在的docx文档的格式,则上传原docx文档即可;
2)所需格式生成:根据用户输入的格式信息,生成一份用于描述该格式的XML文件,其中用户没有定义的格式信息则按照默认格式信息处理;如果用户没有提供格式不整齐的原docx文档而需要生成新的文档,则还需要单独生成一些docx文档特有的XML文件;
3)格式修改:如果用户提供了格式不整齐的docx文档,则需要将用户输入的格式与现有docx文档中控制格式的word/document.xml文件进行对比,如果用户原来XML文件多添加了标签,则将其删除;如果原来XML文件用错了标签,则将其修改;如果原来XML文件少了标签,则将其加上;
4)新文档创建:如果用户没有提供格式不整齐的docx文档,则将所需格式生成步骤中生成的所有XML文件按照docx文档的形式整合并且生成新的docx文档,如果用户提供了格式不整齐的docx文档,则将格式修改步骤中生成的XML文件替换用户提供的docx文档中的对应XML文件即可。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310280580.XA CN103309849B (zh) | 2013-03-28 | 2013-07-05 | 一种基于OpenXML的docx文档创建和修改方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310105211.7 | 2013-03-28 | ||
CN201310105211 | 2013-03-28 | ||
CN201310280580.XA CN103309849B (zh) | 2013-03-28 | 2013-07-05 | 一种基于OpenXML的docx文档创建和修改方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309849A CN103309849A (zh) | 2013-09-18 |
CN103309849B true CN103309849B (zh) | 2015-11-11 |
Family
ID=49135088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310280580.XA Expired - Fee Related CN103309849B (zh) | 2013-03-28 | 2013-07-05 | 一种基于OpenXML的docx文档创建和修改方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309849B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183877B (zh) * | 2015-09-18 | 2019-03-22 | 四川效率源信息安全技术股份有限公司 | 一种重组docx文件碎片数据的方法 |
CN107153694B (zh) * | 2017-05-05 | 2020-08-11 | 广东小天才科技有限公司 | 一种自动修改题目错误的方法、装置、设备和存储介质 |
CN107544952B (zh) * | 2017-08-28 | 2022-01-07 | 金蝶软件(中国)有限公司 | 报表生成方法、装置、存储介质和计算机设备 |
CN109408778A (zh) * | 2018-10-19 | 2019-03-01 | 成都信息工程大学 | 一种基于可视化配置的文档生成控制系统及方法 |
CN110377884B (zh) * | 2019-06-13 | 2023-03-24 | 北京百度网讯科技有限公司 | 文档解析方法、装置、计算机设备及存储介质 |
CN111444697B (zh) * | 2020-03-27 | 2022-04-26 | 中南大学 | 一种基于动态模板获取规范化文档的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196886A (zh) * | 2006-12-08 | 2008-06-11 | 鸿富锦精密工业(深圳)有限公司 | Word文件转换成XML文件的系统及方法 |
CN101587470A (zh) * | 2009-06-15 | 2009-11-25 | 北京信息工程学院 | 文档的编辑方法及装置 |
CN101615174A (zh) * | 2008-06-24 | 2009-12-30 | 北京信息科技大学 | 基于xml的不同格式文档的转换方法 |
CN102509250A (zh) * | 2011-11-03 | 2012-06-20 | 上海大学 | 医用报表自动生成方法 |
-
2013
- 2013-07-05 CN CN201310280580.XA patent/CN103309849B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196886A (zh) * | 2006-12-08 | 2008-06-11 | 鸿富锦精密工业(深圳)有限公司 | Word文件转换成XML文件的系统及方法 |
CN101615174A (zh) * | 2008-06-24 | 2009-12-30 | 北京信息科技大学 | 基于xml的不同格式文档的转换方法 |
CN101587470A (zh) * | 2009-06-15 | 2009-11-25 | 北京信息工程学院 | 文档的编辑方法及装置 |
CN102509250A (zh) * | 2011-11-03 | 2012-06-20 | 上海大学 | 医用报表自动生成方法 |
Non-Patent Citations (1)
Title |
---|
A Survey of XML Tree Patterns;Marouane Hachicha and Jerome Darmont;《IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》;20130131;第25卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103309849A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309849B (zh) | 一种基于OpenXML的docx文档创建和修改方法 | |
CN109948134B (zh) | 一种报告自动生成方法、系统及电子设备和存储介质 | |
CN104461484B (zh) | 前端模板的实现方法和装置 | |
CN108874924B (zh) | 搜索服务的创建方法、装置及计算机可读存储介质 | |
US20070055936A1 (en) | Markup based extensibility for user interfaces | |
US20010014900A1 (en) | Method and system for separating content and layout of formatted objects | |
US9032002B2 (en) | Single file serialization for physical and logical meta-model information | |
CN110705237B (zh) | 文档的自动生成方法、数据处理设备及存储介质 | |
CN106469140A (zh) | 一种报表生成系统及其方法 | |
CN105094832A (zh) | 一种所见即所得的动态生成用户界面的方法和系统 | |
CN104571977A (zh) | 基于html模板的报表打印方法及系统 | |
CN110941427B (zh) | 代码生成方法及代码生成器 | |
US11349902B2 (en) | System and method to standardize and improve implementation efficiency of user interface content | |
CN103559184A (zh) | 表单页面的显示方法和装置 | |
CN105975446A (zh) | 手机端分模块显示word文档内容的方法及系统 | |
CN106708506A (zh) | 一种从视觉上优化Android应用启动速度的方法及装置 | |
CN106776779B (zh) | 基于Mac平台的JSON数据生成实体文件的方法 | |
CN112732239A (zh) | 页面动态生成方法、系统及相应设备和存储介质 | |
KR20110016881A (ko) | 데이터 뷰어 관리 | |
CN111859053A (zh) | 一种可视化图表的数据定义方法及其实现图表库 | |
CN101057231A (zh) | 文档处理装置和文档处理方法 | |
CN104375814A (zh) | 接口文档的生成方法及装置 | |
CN107070679A (zh) | 一种在不同平台统一发布信息的方法 | |
CN111311461B (zh) | 基于b-s的结构化动态病历表单的编辑器及生成方法 | |
CN115841095A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151111 Termination date: 20190705 |
|
CF01 | Termination of patent right due to non-payment of annual fee |