关于word在表格拆分与组合那些事儿

        在word的处理之中,文字,各种类型的图片,最复杂的公式,之前编写的API基本都覆盖了。不过,昨天在做一个文档测试时,发现表格没有能很好的处理。debug文档对应的xml发现,表格与其它这几种内容的组织方式不太一样。像图片,公式,不管么样,都还在基于p(word的基本段落标签)标签,图片与公式的内容都还是隶属于p的内容块里面。但是表格的组织方式是顺序的,独立于任何元素。我们可以通过一张图来看看:


并且它的上级节点就是document,tbl就是word中对应的表格,里面有对表格宽度,高度,行列的各种属性定义。

拆分:

具体在做内容拆分的时候,如果把某一块内容的拆在一起,这是很关键的。特别是里面包含了文字,图片,表格。问题来了,如何定位表格呢?请看下面的图:


很明显,表格里面如果要显示内容,必然是有p元素块。在通过过滤p元素块的过程中,我们可以定位到表格中的某一个cell 块,通过docx4j提供的得到父表签的方法,就能找出当前这个cell所在表格在哪一行,那一行属于哪个表格。过程就是tc=>tr=>tbl的关系(如果对docx4j的API熟悉,你就毫无压力)。有些同学可能会问,如果通过1定位到了表格,那2,3,4,5,6肯定都能定位了?这样不就同一个表格重复了吗?good question!解决这个问题也很easy,我们可以对添加过的tbl做一个缓存,如果下次再出现,证明已经处理过了。效果如图:


原word截图


拆分之后

以上就是关于拆分的原理说明。下面,我们简单说一下组合。

组合:

单纯就表格来说,组合其实不复杂,通过body得到当前子WORD的所有元素,遍历之后添加到新的WORD就行了。

最后贴一张合成的WORD截图:


1


2


3


4


整个WORD是一个A3的版式,是带奇偶分页的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 4,734评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,807评论 25 709
  • 1、去除页眉的横线方法两则 在页眉插入信息的时候经常会在下面出现一条横线,如果这条横线影响你的视觉,这时你可以采用...
    南屋阿米佛头阅读 9,985评论 4 37
  • 感恩我们家的小洗衣机不停的工作,将那么多衣服变得如此洁净,解脱了我的双手,不用因为洗太多的衣服过于劳累,看到那么多...
    邬静阅读 1,378评论 0 2