将OpenXML文档转换为Web表单的方法及装置制造方法及图纸

技术编号:37814360 阅读:16 留言:0更新日期:2023-06-09 09:44
本发明专利技术公开了一种将OpenXML文档转换为Web表单的方法及装置,涉及计算机软件领域,该方法包括导入需转换的OpenXML文档,并基于导入的OpenXML文档,生成OpenXML元素集合;解析OpenXML元素集合,并将OpenXML元素集合中的XML元素保存至创建的队列中;解析队列,将队列中的元素均渲染为DOM对象,且每个DOM对象均继承对应元素在OpenXML文档中的排版和样式;生成HTML文件头和Form元素,并将DOM对象插入Form元素中以作为子元素,得到HTML文件。本发明专利技术能够有效消除人工编码导致的不确定因素,有效降低运维阶段的新增和修改表单的时间成本。效降低运维阶段的新增和修改表单的时间成本。效降低运维阶段的新增和修改表单的时间成本。

【技术实现步骤摘要】
将OpenXML文档转换为Web表单的方法及装置


[0001]本专利技术涉及计算机软件领域,具体涉及一种将OpenXML文档转换为Web表单的方法及装置。

技术介绍

[0002]当前,无纸化办公在各个领域得到广泛应用,许多企业将线下纸质审批的流程转移到了线上,这些线上流程同时也继承了线下审批的一些特征,例如,线下审批时常通过表格形式收集各类文件信息,而当前这一类表格通常可由基于OpenXML(一种基于XML语言的针对字处理文档、演示文稿和电子表格的国际化开放标准)的各种文字编辑器进行绘制,进而打印成纸质文件。
[0003]OpenXML和浏览器使用的HTML(HyperTextMarkupLanguage,超文本标记语言)语言具有极高的相似性。如果可以将这一类表格快速转变为浏览器中可查看和编辑的原生表单元件,不但能保留用户熟悉的操作和填写习惯,提升用户体验,还可以极大地降低将表单移植到浏览器环境的成本。
[0004]Web(网页)应用程序中的表单,通常由开发人员使用符合HTML5(超文本5.0)规格的表单元素手工进行绘制,而绘制浏览器表单的参照通常是一份用户提供的电子文档。传统的表单绘制方法包括硬编码绘制和表单设计器绘制。
[0005]对于硬编码绘制,HTML标准提供了多种制表元素和输入元素。通过调整各个元素对应的CSS(CascadingStyleSheets,层叠样式表)样式可以实现与文档表格外观近似的表单布局。此类绘制方法有许多令人诟病的地方,例如:开发人员的编码风格可能会导致文本编辑器中的元素布局方式与HTML元素的布局出现差异,无法与OpenXML中的定义完全对应,而且难以通过标准化的方式加以控制。因此,通过这种方式绘制的表单,与纸质表单的版式并不完全相同。如果原文档中的表单结构或元素发生变化,则需要根据新需求重新绘制表单中的部分内容并相应地调整样式。
[0006]对于表单设计器绘制,表单设计器是对一类使用可视化的、易操作的方式生成可在浏览器内展示的表单生成工具的统称。表单设计器的本质是将表单设计的过程低代码化,将代码和配置转换为用户界面中的配置。然而,表单设计器绘制的表单通常是比较规整的平铺层级结构,并不能很好地适应嵌套层级复杂的自定义布局和样式。

技术实现思路

[0007]针对现有技术中存在的缺陷,本专利技术的目的在于提供一种将OpenXML文档转换为Web表单的方法及装置,能够有效消除人工编码导致的不确定因素,有效降低运维阶段的新增和修改表单的时间成本。
[0008]为达到以上目的,本专利技术提供的一种将OpenXML文档转换为Web表单的方法,具体包括以下步骤:
[0009]导入需转换的OpenXML文档,并基于导入的OpenXML文档,生成OpenXML元素集合;
[0010]解析OpenXML元素集合,并将OpenXML元素集合中的XML元素保存至创建的队列中;
[0011]解析队列,将队列中的元素均渲染为DOM对象,且每个DOM对象均继承对应元素在OpenXML文档中的排版和样式;
[0012]生成HTML文件头和Form元素,并将DOM对象插入Form元素中以作为子元素,得到HTML文件。
[0013]在上述技术方案的基础上,所述导入需转换的OpenXML文档,具体步骤包括:
[0014]选择需转换的文档,并读取选择的文档以判断选择的文档是否为二进制类型的文件:
[0015]若是,则将选择的文档转换为OpenXML文档;
[0016]若否,则结束。
[0017]在上述技术方案的基础上,所述将OpenXML元素集合中的XML元素保存至创建的队列中,具体步骤包括:
[0018]将OpenXML元素集合中属性名为word或document的元素保存至创建的队列中。
[0019]在上述技术方案的基础上,所述解析队列,将队列中的元素均渲染为DOM对象,具体步骤包括:
[0020]创建用于缓存DOM对象的数组;
[0021]依次解析队列中的元素,将队列中的元素渲染为DOM对象并保存至创建的数组中;
[0022]判断队列中是否还存在未解析的元素:
[0023]若存在,则将队列中未解析的元素渲染为DOM对象并保存至创建的数组中,然后结束对队列的解析;
[0024]若不存在,则结束对队列的解析。
[0025]在上述技术方案的基础上,所述将队列中的元素均渲染为DOM对象,具体步骤包括:
[0026]获取队列中元素的标签名,并基于元素的标签名:
[0027]若标签名为w:tbl,则获取元素的所有行并生成对应的DOM对象,获取元素的子元素中标签名为w:tblPr的布局元素,并将获取的布局元素转换为CSS样式表,构造得到当前元素的DOM对象;
[0028]若标签名不为w:tbl,则判断元素是否为依赖VBA或Active进行编程的高级控件:
[0029]‑
若是,则标记高级控件对应的name属性,获取元素的子元素中标签名为元素标签名+Pr的布局元素,并将获取的布局元素转换为CSS样式表,构造得到当前元素的DOM对象;
[0030]‑
若否,则将元素标记为自然段或文本,并将文本的内容标记为DOM的内部文字属性,获取元素的子元素中标签名为元素标签名+Pr的布局元素,并将获取的布局元素转换为CSS样式表,构造得到当前元素的DOM对象。
[0031]在上述技术方案的基础上,在获取元素的子元素中标签名为w:tblPr的布局元素,并将获取的布局元素转换为CSS样式表之后,构造得到当前元素的DOM对象之前,还包括:
[0032]判断表格行内容是否为空:
[0033]若为空,则获取表格内的所有w:tc元素,创建包含所有w:tc元素的队列,解析队列,从而构造得到当前元素的DOM对象;
[0034]若不为空,则构造得到当前元素的DOM对象。
[0035]在上述技术方案的基础上,所述获取元素的所有行并生成对应的DOM对象,具体步骤包括:
[0036]获取w:tbl元素中的所有w:tr元素,生成与w:tr元素对应的DOM对象,作为所有子元素的容器。
[0037]本专利技术提供的一种将OpenXML文档转换为Web表单的装置,包括:
[0038]导入模块,其用于导入需转换的OpenXML文档,并基于导入的OpenXML文档,生成OpenXML元素集合;
[0039]解析模块,其用于解析OpenXML元素集合,并将OpenXML元素集合中的XML元素保存至创建的队列中;
[0040]渲染模块,其用于解析队列,将队列中的元素均渲染为DOM对象,且每个DOM对象均继承对应元素在OpenXML文档中的排版和样式;
[0041]生成模块,其用于生成HTML文件头和Form元素,并将DOM对象插入Form元素中以作为子元素,得到HTML文件。
[0042]在上述技术本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将OpenXML文档转换为Web表单的方法,其特征在于,具体包括以下步骤:导入需转换的OpenXML文档,并基于导入的OpenXML文档,生成OpenXML元素集合;解析OpenXML元素集合,并将OpenXML元素集合中的XML元素保存至创建的队列中;解析队列,将队列中的元素均渲染为DOM对象,且每个DOM对象均继承对应元素在OpenXML文档中的排版和样式;生成HTML文件头和Form元素,并将DOM对象插入Form元素中以作为子元素,得到HTML文件。2.如权利要求1所述的一种将OpenXML文档转换为Web表单的方法,其特征在于,所述导入需转换的OpenXML文档,具体步骤包括:选择需转换的文档,并读取选择的文档以判断选择的文档是否为二进制类型的文件:若是,则将选择的文档转换为OpenXML文档;若否,则结束。3.如权利要求1所述的一种将OpenXML文档转换为Web表单的方法,其特征在于,所述将OpenXML元素集合中的XML元素保存至创建的队列中,具体步骤包括:将OpenXML元素集合中属性名为word或document的元素保存至创建的队列中。4.如权利要求1所述的一种将OpenXML文档转换为Web表单的方法,其特征在于,所述解析队列,将队列中的元素均渲染为DOM对象,具体步骤包括:创建用于缓存DOM对象的数组;依次解析队列中的元素,将队列中的元素渲染为DOM对象并保存至创建的数组中;判断队列中是否还存在未解析的元素:若存在,则将队列中未解析的元素渲染为DOM对象并保存至创建的数组中,然后结束对队列的解析;若不存在,则结束对队列的解析。5.如权利要求1所述的一种将OpenXML文档转换为Web表单的方法,其特征在于,所述将队列中的元素均渲染为DOM对象,具体步骤包括:获取队列中元素的标签名,并基于元素的标签名:若标签名为w:tbl,则获取元素的所有行并生成对应的DOM对象,获取元素的子元素中标签名为w:tblPr的布局元素,并将获取的布局元素转换为CSS样式表,构造得到当前元素的DOM对象;若标签名不为w:tbl,则判断元素是否为依赖VBA或Active进行编程的高级控件:

若是,则标记高级控件对应的name属性,获取元素的子元素中标签名为元素标签名+Pr的布局元素,并将获取的布局元素转换...

【专利技术属性】
技术研发人员:蔡九天张小琛刘言军瞿礼余龙肖捷胡腾文建伟
申请(专利权)人:武汉烽火信息集成技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1