使用過PageOffice動態生成word文檔的人都知道,PageOffice可以給word文檔的指定位置進行填充,這里我們所說的指定位置在PageOffice的專業術語里面有兩個概念,一個叫做數據區域(DataRegion),另一個叫做數據標簽(DataTag)。
一、 概念
數據區域:是Word文檔中具有 "PO_" 前綴命名的書簽所定位的文檔區域。簡單來說,數據區域就是一種特殊的Word書簽對象,便於定位Word文檔中的內容。
數據標簽:是任意的有效字符組成的特殊樣式的字符串(如“【時間】”、“{姓名}”、“${name}”等等)作為標記,理論上這樣的字符串(比如:“性別”、“地址”、“aa”、“bbcc”)也可以當做數據標簽,但是不推薦使用,因為這樣的標簽不能從視覺上直觀的看出word文檔中包含了哪些數據標簽。
二、使用
數據區域里面可以填充些的內容:文本、圖片、Word文件、Excel文件。
WordDocument doc = new WordDocument(); //填充文本 DataRegion dataRegion1 = doc.openDataRegion("PO_userName"); dataRegion1.setValue("張三"); //還可以給填充的文本設置字體,顏色,粗體等樣式 dataRegion1.getFont().setColor(Color.blue); dataRegion1.getFont().setSize(24); dataRegion1.getFont().setName("隸書"); dataRegion1.getFont().setBold(true); //填充圖片 doc.openDataRegion("PO_deptName").setValue("[image]img/123.jpg[/image]"); //填充word文件 doc.openDataRegion("PO_deptName").setValue("[word]doc/aabb.doc[/word]"); //填充excel文件 doc.openDataRegion("PO_deptName").setValue("[excel]doc/bbcc.xls[/excel]");
數據標簽中可以填充的內容:文本。
WordDocument doc = new WordDocument(); //填充文本,還可以設置字體、顏色等樣式 DataTag deptTag = doc.openDataTag("{部門名}"); deptTag.setValue("市場部"); deptTag.getFont().setColor(Color.GREEN); deptTag.getFont().setName("宋體"); deptTag.getFont().setSize(28);
三、區別
DataRegion類是要與書簽結合使用的,既可以先在Word文檔中插入以“PO_”開頭的書簽定義數據區域,再在程序中通過WordDocument類對象的OpenDataRegion(String DataRegionName)方法獲取DataRegion對象;又可以通過WordDocument類對象的CreateDataRegion(String NewDataRegionName, DataRegionInsertType insertType, String RelativeDataRegionName)方法直接創建數據區域從而獲取DataRegion類對象。而DataTag類是與Word文檔中用戶插入的自定義特征文本結合使用的。在程序中DataTag類對象只能通過OpenDataTag(String DataTagName)方法獲取。
另外,數據區域的名稱(即書簽名稱)必須以“PO_”開頭,兩個書簽之間要有最少一個的有效字符,不能重復,數據區域的名稱和Word文檔中的位置是一一對應的。而數據標簽的名稱就是具有一定特征的Word字符串文本,便於定位Word文檔中的內容,可以重復,數據標簽的名稱和Word文檔中的位置是一對多的關系。也就是說,同一個Name的DataRegion只能表示Word文檔中唯一一個位置,而在Word文檔中相同的特征字符串可以在多處出現。
所以DataRegion的優點是:DataRegion既可以填充文檔內容,還可以創建文檔內容、提交用戶在DataRegion里輸入的內容、獲取用戶提交的DataRegion里的內容,而DataTag只能用於填充文檔內容。DataRegion的缺點是:DataRegion無法簡單重復,必須要設置不同的書簽,而DataTag可以在文檔中多處生成需要重復的內容。
而應該用DataTag還是用DataRegion,則應該視具體的需求而定。當用戶要提交Word中某部分數據或者想要獲取Word中提交的某部分數據時則必須要用DataRegion;當用戶不需提交數據或者獲取數據,並且填充的數據無重復項時,則兩者均可;當用戶不需提交數據或者獲取數據,且填充的數據有多個重復項時,雖然兩者均可,但是為了編程簡便、代碼高效,建議使用DataTag。