pageoffice線上開啟word檔案生成表格

爱吃苹果皮發表於2024-04-18

轉載:資料區域生成表格

# 資料區域生成表格

  • 檢視本示例演示效果
  • 本示例關鍵程式碼的編寫位置
    • Vue+Springboot

注意

本文中展示的程式碼均為關鍵程式碼,複製貼上到您的專案中,按照實際的情況,例如文件路徑,使用者名稱等做適當修改即可使用。

在實際專案的開發中會遇到這樣的需求:要求在生成word檔案的時候,在檔案的指定位置動態生成表格並填充。

public Table createTable(int numRows,
                         int numColumns,
                         WdAutoFitBehavior autoFitBehavior)
                  throws java.lang.Exception

引數:

  • numRows 新表格的行數。
  • numColumns 新表格的列數。
  • autoFitBehavior 用於設定 Word 調整表格大小的“自動調整”規則。

資料區域生成表格通常有兩種使用場景:

  1. 在word文件已有的指定的資料區域位置動態生成表格。
Java
//在word中指定的"PO_table1"的資料區域內動態建立一個3行5列的表格
Table table1 = doc.openDataRegion("PO_table1").createTable(3, 5, WdAutoFitBehavior.wdAutoFitWindow);
.Net Core
//在word中指定的"PO_table1"的資料區域內動態建立一個3行5列的表格
PageOfficeNetCore.WordWriter.Table table1 = 
      doc.OpenDataRegion("PO_table1").CreateTable(3, 5, PageOfficeNetCore.WordWriter.WdAutoFitBehavior.wdAutoFitWindow);
  1. 在 word 文件開始或者末尾處動態生成表格。這種場景就需要依賴 PageOffice 預留的兩個特殊資料區域:[HOME]和[END]動態建立資料區域,然後根據新生成的資料區域動態生成表格。
Java
//在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);
.Net Core
//在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 列的表格並動態填充。

Java
PageOfficeCtrl 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, "張三");
.Net Core
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");

# 前端程式碼

本示例無前端關鍵程式碼。

相關文章