隨筆-35  評論-33  文章-0  trackbacks-0

                  在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的版式,是帶奇偶分頁的。



          我的微信公眾號,歡迎溝通學習。
          posted on 2017-08-25 15:54 alexcai 閱讀(763) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 曲沃县| 合川市| 奉新县| 碌曲县| 迭部县| 蒙城县| 郑州市| 伊吾县| 彭泽县| 浦城县| 菏泽市| 泰宁县| 醴陵市| 渭南市| 南岸区| 茌平县| 三明市| 库伦旗| 天祝| 河西区| 米泉市| 探索| 马尔康县| 清镇市| 抚远县| 福泉市| 大同县| 岐山县| 潜山县| 门源| 长宁区| 博罗县| 河东区| 五原县| 于都县| 高青县| 岳西县| 邵阳县| 威海市| 驻马店市| 闽侯县|