AG Grid 的列分組、彙總、樹狀資料、主從表和 Excel 匯出都屬於 Enterprise 版功能:用於正式環境必須取得商業授權;沒有金鑰時,表格會顯示浮水印,並在主控台記錄一則錯誤。Needless UI 資料表格以 MIT 授權提供含合計的分組、樹狀資料、列的詳細資料和 .xlsx 匯出。這份指南說明如何把 Angular 應用程式從前者遷移到後者:哪些可以直接沿用、哪些不行,以及程式碼要怎麼改。

本文使用 AG Grid 36 的名稱。AG Grid 36 支援 Angular 20 到 22;Needless UI 則需要 Angular 22。

功能比較

AG Grid 與 Needless UI 資料表格
功能AG GridNeedless UI
列分組,含彙總值和合計列Enterprise支援:可多層分組,彙總方式包括總和、平均值、最小值、最大值、計數或自訂函式
樹狀資料Enterprise支援,由巢狀的列構成
列下方的詳細資料(master/detail)Enterprise支援:列下方可放任何範本,也可以是另一個表格
Excel 匯出Enterprise:樣式、多個工作表、圖片和公式支援:單一工作表,儲存格保留資料類型,附數值格式,標題列凍結並可篩選
附欄選擇器的欄選單Enterprise支援:可對每一欄排序、篩選、固定、移動、自動調整欄寬和隱藏,也能一次顯示或隱藏所有欄
依多欄排序、快速搜尋、分頁、列選取Community支援
欄篩選Community:最多兩個條件,以 AND 或 OR 連接每欄一個條件
集合篩選、多重篩選和進階篩選Enterprise部分支援:核取清單來自欄的選項,而非資料中的值
調整欄寬、移動、固定和隱藏欄,並儲存欄狀態Community支援
虛擬捲動Community:列和欄僅限列
儲存格編輯Community;部分編輯器屬於 Enterprise支援,依欄類型編輯並附驗證;不支援自訂編輯器,也不支援復原
樞紐分析、整合式圖表Enterprise不支援
剪貼簿、儲存格範圍選取、右鍵選單、狀態列、側邊欄Enterprise不支援
伺服器資料伺服器端列模型:Enterprise;分塊載入:Community由你的伺服器分頁提供,排序、篩選和搜尋也由伺服器完成;不支援伺服器端分組
欄標題分組、拖曳列、固定列Community不支援
框架React、Angular 20 到 22、Vue 和純 JavaScriptAngular 22 和 React 19

選項對照

AG Grid 的選項及其在 Needless UI 中的對應項目
AG GridNeedless UI 資料表格
<ag-grid-angular>、模組註冊、LicenseManager.setLicenseKey()<nui-grid>;不需要註冊,也不需要金鑰
rowData、columnDefs[(rows)]、[columns]
field、headerNameid、header
valueGetter、valueFormatter、cellDataTypevalue、format(Intl 選項或函式)、type
cellRenderernuiGridCell 範本
pinned: 'left'、hidepinned: 'start'、hidden
欄的 rowGroup、groupDefaultExpanded[(groupBy)],也就是由欄 id 組成的清單。群組預設為展開;[(collapsed)] 可將群組收合。
aggFunc、grandTotalRowaggregate、totals
treeData 搭配 treeDataChildrenFieldchildren: (row) => row.children
masterDetail、detailCellRenderernuiGridDetail 範本,以及 [(details)]
quickFilterText[(search)]
rowSelection、getSelectedRows()selection,以及 [(selected)]:所選列的 key
pagination、paginationPageSize[(pageSize)]、[(page)]、pageSizes
getColumnState()、applyColumnState()[(columnState)]
exportDataAsExcel()、exportDataAsCsv()exportXlsx() 傳回 Blob,exportCsv() 傳回文字
cellValueChanged、rowDoubleClicked(cellEdit)、(rowActivate)
rowModelType: 'serverSide'mode="server"、total、(queryChange)
localeText、enableRtllabels;由右至左的版面取決於頁面的 dir

依國家分組訂單的兩種寫法

需求是:訂單依國家分組,每個國家各有一個合計,所有訂單另有一個總計;此外還要支援 Excel 匯出、快速搜尋和多選。使用 AG Grid 36 時,分組、合計和 Excel 匯出都需要 Enterprise 版:

使用 Needless UI 資料表格:

有幾點做法不同。選取狀態存放的是 key,也就是列的 id,因此資料更新後選取仍會保留;需要列本身時,再用這些 key 找回對應的列。群組預設為展開。群組的標籤會顯示在第一個可見的欄中,而搜尋只會讀取可見的欄,所以如果希望搜尋也能比對分組所依據的欄,就要讓該欄保持顯示。此外,exportXlsx() 會傳回檔案,而不是直接下載:檔案只有一個工作表,內含篩選和排序後的列,不含群組列。

如果需要尚未支援的功能

如果你的應用程式依賴樞紐分析、圖表、剪貼簿和範圍選取、伺服器端分組或欄標題分組,Needless UI 資料表格目前還無法取代 AG Grid。歡迎針對你需要的功能提出 issue。至於其他內容,資料表格頁面列出了每個輸入屬性、輸出屬性和範例。