轉載:資料區域生成表格
# 資料區域生成表格
- 檢視本示例演示效果
- 本示例關鍵程式碼的編寫位置
- Vue+Springboot
注意
本文中展示的程式碼均為關鍵程式碼,複製貼上到您的專案中,按照實際的情況,例如文件路徑,使用者名稱等做適當修改即可使用。
在實際專案的開發中會遇到這樣的需求:要求在生成word檔案的時候,在檔案的指定位置動態生成表格並填充。
public Table createTable(int numRows,
int numColumns,
WdAutoFitBehavior autoFitBehavior)
throws java.lang.Exception
引數:
numRows
新表格的行數。numColumns
新表格的列數。autoFitBehavior
用於設定 Word 調整表格大小的“自動調整”規則。
資料區域生成表格通常有兩種使用場景:
- 在word文件已有的指定的資料區域位置動態生成表格。
//在word中指定的"PO_table1"的資料區域內動態建立一個3行5列的表格
Table table1 = doc.openDataRegion("PO_table1").createTable(3, 5, WdAutoFitBehavior.wdAutoFitWindow);
//在word中指定的"PO_table1"的資料區域內動態建立一個3行5列的表格
PageOfficeNetCore.WordWriter.Table table1 =
doc.OpenDataRegion("PO_table1").CreateTable(3, 5, PageOfficeNetCore.WordWriter.WdAutoFitBehavior.wdAutoFitWindow);
- 在 word 文件開始或者末尾處動態生成表格。這種場景就需要依賴 PageOffice 預留的兩個特殊資料區域:[HOME]和[END]動態建立資料區域,然後根據新生成的資料區域動態生成表格。
//在word文件的末尾處動態建立一個3行5列的表格。具體程式碼步驟是先根據PageOffice預留[END]資料區域動態建立"PO_table1",然後在"PO_table1"處動態建立3行5列的表格。
Table table1 = doc.createDataRegion("PO_table1",DataRegionInsertType.After, "[END]").createTable(3, 5, WdAutoFitBehavior.wdAutoFitWindow);
//在word文件的末尾處動態建立一個3行5列的表格。具體程式碼步驟是先根據PageOffice預留[END]資料區域動態建立"PO_table1",然後在"PO_table1"處動態建立3行5列的表格。
PageOfficeNetCore.WordWriter.Table table1 =
doc.CreateDataRegion("PO_table1", PageOfficeNetCore.WordWriter.DataRegionInsertType.After, "[END]").CreateTable(3, 5, PageOfficeNetCore.WordWriter.WdAutoFitBehavior.wdAutoFitWindow);
# 後端程式碼
例如:在當前 word 檔案的末尾處生成一個 3 行 5 列的表格並動態填充。
JavaPageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
WordDocument doc = new WordDocument();
DataRegion dr = doc.createDataRegion("PO_table1",DataRegionInsertType.After, "[END]");
Table table1 = dr.createTable(3, 5, WdAutoFitBehavior.wdAutoFitWindow);
for (int i = 1; i < 4; i++) {
table1.openCellRC(i, 1).setValue("AA" + String.valueOf(i));
table1.openCellRC(i, 2).setValue("BB" + String.valueOf(i));
table1.openCellRC(i, 3).setValue("CC" + String.valueOf(i));
table1.openCellRC(i, 4).setValue("DD" + String.valueOf(i));
table1.openCellRC(i, 5).setValue("EE" + String.valueOf(i));
}
poCtrl.setWriter(doc);
//開啟Word檔案
poCtrl.webOpen("D:\\template1.docx", OpenModeType.docNormalEdit, "張三");
PageOfficeNetCore.PageOfficeCtrl POCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
PageOfficeNetCore.WordWriter.WordDocument doc = new PageOfficeNetCore.WordWriter.WordDocument();
PageOfficeNetCore.WordWriter.DataRegion dr = wordDoc.CreateDataRegion("PO_table1", PageOfficeNetCore.WordWriter.DataRegionInsertType.After, "[END]");
PageOfficeNetCore.WordWriter.Table table1 = dr.CreateTable(3, 5, PageOfficeNetCore.WordWriter.WdAutoFitBehavior.wdAutoFitWindow);
for (int i = 1; i < 4; i++)
{
table1.OpenCellRC(i, 1).Value = "AA" + i.ToString();
table1.OpenCellRC(i, 2).Value = "BB" + i.ToString();
table1.OpenCellRC(i, 3).Value = "CC" + i.ToString();
table1.OpenCellRC(i, 4).Value = "DD" + i.ToString();
table1.OpenCellRC(i, 5).Value = "DD" + i.ToString();
}
POCtrl.SetWriter(doc);
//開啟Word文件
POCtrl.WebOpen("D:\\template1.docx", PageOfficeNetCore.OpenModeType.docNormalEdit, "tom");
# 前端程式碼
本示例無前端關鍵程式碼。