操作底層代碼的方式給docx文件插入分頁,表格

1. 首先清楚docx文件實質上是一個壓縮包,把後綴名改成zip保存後解壓即可看到docx底層代碼

2. 在解壓縮文件中有一個document.xml他是docx文件的內容主體,docx文件中的內容都在此文件中

目錄結構如圖所示:

 

詳細路徑自己可解壓查看。

3. 本人因工作需求,需要在每份docx文件的首頁插入一個表格,表格是動態的

經歷:a . 通過docx4j實現成功過,但是對於內容比較複雜,格式比較多的docx文件,插入後格式會亂;

           b. 通過poi的方式實現過,結果一樣格式還會亂;

總結:因爲這些都是第三方工具,它底層到底怎麼操作的說實話真不好搞明白,那我就直接搞明白docx底層怎麼實現的就行了,穩妥。

4.    此處我就以在首頁插入分頁爲例講解下怎麼實現。

   4.1. 先打開document.xml文件發現它是很有規律的(找規律很重要),它的大致結構就是<w:body><w:p><w:p></w:body>,你會發現你的內容東西都是放在<w:p>這個段落中 的。

  4.2.  現在開始插分頁,在此之前,你可以新建一個docx文件,然後簡單寫點內容,然後插入分頁,在把文件解壓縮,找到document.xml觀察下他的底層代碼中有什麼變化,觀察發現,他增加了一句話,整理後就是這個樣子:<w:p><w:r><w:br w:type="page" /></w:r></w:p>就是這簡單的一句話他就是個分頁。

4.3. 因爲需求是在首頁插入表格,插入表格的頁是一個單獨的頁,所以必須先插入分頁,在插入表格,所以這就好辦了,在開頭我把這句話插進去不就ok了,所以在<w:body>後面把分頁那句話加進去,搞定。

4.4  測試的時候你直接把document.xml改了,讓後放入原來的文件重新壓縮,打開看效果。

4.5. 現在說一下如何通過代碼實現,此處直接說思路,我也想給上源碼,沒辦法公司保密機制太嚴,拿不到源碼啊

    4.5.1. 簡單來說就是通過把文件解壓後讀入對應的文件,拿到裏面的內容,通過字符串replace方法,直接修改內容,在把修改後的內容讀出到文件,重新壓縮。

    4.5.2. 上幾張截圖代碼:(注:下面截圖中有個完整的添加分頁的方法,添加表格的沒截全,因爲他和添加分頁方法類似,相信你能舉一反三,說白了就是個字符串操作,沒那麼高大上。)

 

 

 

 

 

 4.5.3 再說寫注意事項:

   4.5.3.1. 如果你要通過代碼的方式插入表格,修改完document.xml後,你還需要做個操作,在style.xml中找到對應的樣式,拷貝到document.xml中對應的地方,話不多說看圖:

 

4.5.3.2. 如果你想通過代碼的方式插入圖片,方法有兩種,1.通過docx4j的方式,此處就不多說了,網上代碼一大堆;2.通過操作源碼的方式,接下來簡單介紹下:

添加一個圖片到docx文件,它底層代碼做了4個操作:

(1)找到[Content_Types].xml,看圖:

 (2)找到document.xml.rels,看圖:

 (3)找到圖片保存位置,打開看一下圖片名稱,看圖:

(4)找到document.xml ,看圖:

知道了它底層的過程剩下的就簡單了,還是之前的代碼流程:

解壓縮--》讀文件--》字符串替換--》重新壓縮--》ok

總結:此方式的誕生也是迫於無奈,採用其他的docx4j,poi等方式一旦格式亂了,都找不到原因,採用此種直接操作底層代碼的方式比較穩定,容易找問題,分析底層代碼其實不是很難,找規律即可,不需要全懂,找到需要的就ok

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章