基於WordML生成word檔案的完美解決方案

2021-07-22 14:36:52 字數 2298 閱讀 5995

生成word文件的類庫有很多,常用的有jacob,itext等等,itext只能支援word的部分功能,itext-rtf-2.1.7.jar 沒有持續更新,itext 不支援在word文件中顯示位置指定x,y值,不支援**的單元格畫圖(如畫單元格斜線)

wordml語法非常複雜,因為

word

有非常多的功能,但可以根據使用場景去生成部分

xml,可查詢官方文件對

wordml

的元素定義,例如

table

,,浮動層文字、等。

乙個類似浮動層文字基本的wordxml結構是如下:

<?xml version="1.0" encoding="utf-8"?>

test

可以用記事本建立乙個檔案,將上面的

xml內容貼上,並儲存為

test.doc

,則開啟

word

會解析xml

為doc

文件。

word

命名空間如下:

public inte***ce wordml

base64資料

word 中table對應的xml元素:

element tbl = new defaultelement(new qname("tbl", wordml.ns_w));

element tblpre = tbl.addelement(new qname("tblpr", wordml.ns_w));

element tblwe = tblpre.addelement(new qname("tblw", wordml.ns_w));

tblwe.addattribute(new qname("w", wordml.ns_w), "0").addattribute(new qname("type", wordml.ns_w), "auto");

建立table

中tr:

element tr = new defaultelement(new qname("tr", wordml.ns_w));

element trpr = new defaultelement(new qname("trpr", wordml.ns_w));

element trheight = trpr.addelement(new qname("trheight", wordml.ns_w));

trheight.addattribute(new qname("val", wordml.ns_w), string.valueof(height));

建立table中td,單元格合併:

element tc = new defaultelement(new qname("tc", wordml.ns_w));

element tcpr = tc.addelement(new qname("tcpr", wordml.ns_w));

element tcw = tcpr.addelement(new qname("tcw", wordml.ns_w));

float width = cell.getwidth() * wordml.ptw_value;

tcw.addattribute(new qname("w", wordml.ns_w), string.valueof(width));

tcw.addattribute(new qname("type", wordml.ns_w), "dxa");

element tcborders = tcpr.addelement(new qname("tcborders", wordml.ns_w));

if (stringutil.isnotempty(cell.getverticalalignment()))

if (cell.getbackgroundcolor() != null)

if (cell.getcolspan() > 1)

if (cell.isrestart())

if (cell.isvmerge())

原文出處:

word 生成目錄

裝載 電腦技術角 百家號18 05 1219 40 用 word 編排好一本書後,不用製作目錄,可以用自動生成的方法生成,那麼word2016目錄怎麼自動生成呢?如果要自動生成目錄,排版時就要設定好章節,如果等排版好一本後再設定章節將再花費大量時間。設定章節主要是指不同的章節使用不同的標題,例如 第...

Java根據word模板生成word文件之總結

至此word生成就完事了,我寫的有點粗,但是應該能看到的懂,沒有經過重構,很亂,而且方法體應該還需要調整,但是不影響我們的功能實現。通過這一整套流程,其實完全可以做成乙個元件式的東西,我現在沒有時間去考慮他,大家有時間好好考慮一下,完全做到可配置話的,我現在能做到單個標籤,的定義即可配置化,但是如果...

C 根據Word模版生成Word檔案

指定的word模版 2,生成word類 新增com microsoft word 11.0 object library 引用 usingsystem usingsystem.collections.generic usingsystem.data usingsystem.windows.forms...