Word中的table是要藉助數據區域(DataRegion)實現的,要求數據區域完整的包含了整個Table的內容,這樣才能夠經過數據區域控制和操做table。所以,要想使用table,則必須在word文件中插入書籤。而table的插入,既能夠在Word模版中書籤處手動插入:工具欄「插入」→「表格」,亦能夠在程序中經過數據區域動態添加。web
1. 把Table包含在數據區域中。
例如:有這樣一我的員信息表,想要在這我的員信息表中填充數據,則必須先將整個成績表的table包含到一個「書籤」中。工具
人員信息表 | ||
---|---|---|
公司名稱 | 部門名稱 | 員工姓名 |
. |
選擇表格,而後插入書籤,好比書籤名爲:PO_regTable,操做步驟以下圖所示:spa
注:插入書籤的時候必定要先選中整個table,而後再點擊插入書籤按鈕進行插入。3d
2. 編寫代碼給Table賦值。code
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); WordDocument doc = new WordDocument(); DataRegion dataRegion = doc.openDataRegion("PO_regTable"); Table table = dataRegion.openTable(1); //index表明當前書籤中table位置的索引,從1開始 table.openCellRC(3, 1).setValue("A公司");//openCellRC(行, 列),索引從1開始 table.openCellRC(3, 2).setValue("開發部"); table.openCellRC(3, 3).setValue("李清"); //插入一行,insertRowAfter方法中的參數表明在哪一個單元格下面插入一個空行 table.insertRowAfter(table.openCellRC(3, 3)); table.openCellRC(4, 1).setValue("B公司"); table.openCellRC(4, 2).setValue("銷售部"); table.openCellRC(4, 3).setValue("張三丰"); poCtrl1.setWriter(doc); poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "張三");
填充數據後的表格以下圖所示:orm
請參考PageOffice產品開發包中Samples4示例:
1、1七、給Word文檔中Table賦值的簡單示例server
一樣地,程序動態地給word添加table時須要在製做模板的時候先插入一個數據區域,命名爲:PO_table1,這樣就能夠經過獲取到數據區域PO_table1以後,用數據區域對象DataRegion的CreateTable方法在此數據區域所在位置新建一個表格。CreateTable方法有三個參數,分別是:行、列和表格類型。表格類型目前分三種,以下表所示。對象
成員名稱 | 值 | 說明 |
---|---|---|
wdAutoFitFixed | 0 | 將表格設置爲固定大小而與內容無關,所以不會自動調整表格大小。 |
wdAutoFitContent | 1 | 根據表格中包含的內容自動調整表格的大小 |
wdAutoFitWindow | 2 | 根據活動窗口的寬度自動調整表格大小。 |
代碼實現:blog
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request); WordDocument doc = new WordDocument(); //在word中指定的"PO_table1"的數據區域內動態建立一個3行5列的表格 Table table1 = doc.openDataRegion("PO_table1").createTable(3,5,WdAutoFitBehavior.wdAutoFitWindow); //合併(1,1)到(3,1)的單元格並賦值 table1.openCellRC(1,1).mergeTo(3,1); table1.openCellRC(1,1).setValue("合併後的單元格"); //給表格table1中剩餘的單元格賦值 for(int i=1;i<4;i++){ table1.openCellRC(i, 2).setValue("AA" + String.valueOf(i)); table1.openCellRC(i, 3).setValue("BB" + String.valueOf(i)); table1.openCellRC(i, 4).setValue("CC" + String.valueOf(i)); table1.openCellRC(i, 5).setValue("DD" + String.valueOf(i)); } //在"PO_table1"後面動態建立一個新的數據區域"PO_table2",用於建立新的一個5行5列的表格table2 DataRegion drTable2= doc.createDataRegion("PO_table2", DataRegionInsertType.After, "PO_table1"); Table table2=drTable2.createTable(5,5,WdAutoFitBehavior.wdAutoFitWindow); //給新表格table2賦值 for(int i=1;i<6;i++){ table2.openCellRC(i, 1).setValue("AA" + String.valueOf(i)); table2.openCellRC(i, 2).setValue("BB" + String.valueOf(i)); table2.openCellRC(i, 3).setValue("CC" + String.valueOf(i)); table2.openCellRC(i, 4).setValue("DD" + String.valueOf(i)); table2.openCellRC(i, 5).setValue("EE" + String.valueOf(i)); } poCtrl.setWriter(doc);//不要忘記此行代碼 poCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); poCtrl.webOpen("doc/test.doc", OpenModeType.docNormalEdit,"張佚名");
生成效果:索引
請參考PageOffice產品開發包中Samples4示例的「高級功能」演示: 2、4三、在Word文檔中動態建立表格並賦值(專業版、企業版)