如何使用 C# 在 Excel 中新增"凍結窗格"
在擁有 50 多行或列數超過"Z"的大型 Excel 試算表中,要在保持標題可見的同時檢視資料,將變得相當困難。 C# 中的"凍結區塊"功能提供了一種優雅的解決方案,可將特定列與行固定在原位,同時讓其餘部分自由捲動。
當處理財務報表、員工資料庫或庫存清單時,此功能至關重要,因為您需要隨時掌握欄位標題或列識別碼的資訊。 透過 IronXL 程式庫,您可以在 .NET 應用程式中透過程式碼新增"凍結窗格",以改善資料導覽與使用者體驗。
快速入門:將表頭列與表頭列鎖定在同一行
使用簡單的 CreateFreezePane(colSplit, rowSplit) 方法,即可在數秒內凍結行或列。 無需複雜設定——只需載入您的試算表、呼叫此方法,瀏覽時頁首標題便會固定在頂端。
簡化工作流程(4 個步驟)
若要在試算表中新增凍結區塊,請依照以下步驟操作:
- 安裝凍結窗格所需的 C# 函式庫
- 使用帶有 2 個參數的
CreateFreezePane來新增凍結窗格 - 使用帶有 4 個參數的
CreateFreezePane方法,以預先捲動定位的方式新增固定窗格 - 將試算表匯出為所需的檔案格式
如何在 Excel 中新增"凍結橫向/縱向"功能?
凍結窗格可將行與列固定在原位,使其在捲動時仍保持可見。 此功能可在快速比對資訊的同時,保持標題欄位或列的位置不變。 此功能在處理大型資料集時,或當您需要在瀏覽龐大試算表時維持上下文關聯性時,尤為實用。
IronXL 中的"凍結工作表"功能模擬了 Excel 的原生功能,對於熟悉 Excel 介面的開發人員而言,操作起來直覺易懂。 與 Excel Interop 解決方案不同,IronXL 提供了一種更高效且更適合伺服器環境的方法,用於透過程式設計實現"凍結區格"功能。
CreateFreezePane 如何處理 2 個參數?
若要新增固定區塊,請使用 CreateFreezePane 方法,並指定固定區塊應從哪一列、哪一欄開始。 指定的欄位和列未包含在凍結區塊中。 例如,workSheet.CreateFreezePane(1, 4) 會建立一個從 column A 開始並包含 rows 1 to 4 的凍結窗格。
理解零基索引至關重要:第 0 欄指 A 欄,第 1 欄指 B 欄,依此類推。 列索引的格式亦遵循相同模式。 此方法非常適合在瀏覽資料條目時,希望保持標題可見的情境。
以下程式碼範例示範如何從 B 欄第 4 行開始建立固定區塊:
:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-add.cs
using IronXL;
using System.Linq;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();
// Create freeze pane from column(A-B) and row(1-3)
workSheet.CreateFreezePane(2, 3);
workBook.SaveAs("createFreezePanes.xlsx");
Imports IronXL
Imports System.Linq
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.WorkSheets.First()
' Create freeze pane from column(A-B) and row(1-3)
workSheet.CreateFreezePane(2, 3)
workBook.SaveAs("createFreezePanes.xlsx")
"凍結窗格"功能實際運作時是什麼樣子?
如何取消"凍結窗格"?
請使用 RemovePane 方法,從您的試算表中移除所有現有的凍結區塊。 當您需要重置檢視畫面,或根據使用者偏好或資料變更套用不同的凍結設定時,此功能便十分實用。
:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-remove.cs
// Remove all existing freeze or split pane
workSheet.RemovePane();
' Remove all existing freeze or split pane
workSheet.RemovePane()
"凍結窗格"的高級選項有哪些?
CreateFreezePane 方法提供了一種進階選項,可建立具備預先捲動功能的固定窗格。 當您希望在維持"凍結工作表"功能的同时,將注意力集中於試算表的特定區域時,此功能便十分實用。
何時應使用 4 個參數來設定進階的"凍結窗格"?
此方法可讓您根據指定的起始欄位和列,新增一個固定區塊。 此外,它還讓您能夠在工作表上啟用捲動功能。 這在處理格式化的 Excel 報表時尤為實用,因為您需要精確控制初始檢視畫面。
例如,使用 workSheet.CreateFreezePane(5, 2, 6, 7) 會建立一個橫跨 columns A-E 和 rows 1-2 的凍結區塊。 內容包含一個 1 欄 5 行的捲軸。 工作表開啟時,會顯示 columns A-E, G-... 和 rows 1-2, 8-...。
:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-advance.cs
using IronXL;
using System.Linq;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();
// Overwriting freeze or split pane to column(A-E) and row(1-5) as well as applying prescroll
// The column will show E,G,... and the row will show 5,8,...
workSheet.CreateFreezePane(5, 5, 6, 7);
workBook.SaveAs("createFreezePanes.xlsx");
Imports IronXL
Imports System.Linq
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.WorkSheets.First()
' Overwriting freeze or split pane to column(A-E) and row(1-5) as well as applying prescroll
' The column will show E,G,... and the row will show 5,8,...
workSheet.CreateFreezePane(5, 5, 6, 7)
workBook.SaveAs("createFreezePanes.xlsx")
"進階凍結窗格"功能呈現為何?
"凍結窗格"的實際應用案例
在各種商業情境中,"凍結窗格"功能極具價值:
- 財務報告:在捲動瀏覽年度資料時,應保持月份/季度標題可見
- 員工資料庫:在檢視績效指標時鎖定員工姓名與 ID
- 庫存管理:在審核庫存數量時修正產品代碼與名稱
- 銷售儀表板:在分析區域銷售數據的同時,維持產品類別的清晰可見性
結合 Excel 公式使用時,凍結窗格功能能顯著提升資料分析效率。
完整範例:使用"凍結欄位"建立資料報表
以下是一個完整的範例,展示如何建立帶有"凍結窗格"功能的格式化報表:
using IronXL;
using IronXl.Styles;
// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");
// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";
// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Add sample data
for (int i = 2; i <= 50; i++)
{
workSheet[$"A{i}"].Value = $"P{i-1:D3}";
workSheet[$"B{i}"].Value = $"Product {i-1}";
workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}
// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);
// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);
// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
using IronXL;
using IronXl.Styles;
// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");
// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";
// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Add sample data
for (int i = 2; i <= 50; i++)
{
workSheet[$"A{i}"].Value = $"P{i-1:D3}";
workSheet[$"B{i}"].Value = $"Product {i-1}";
workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}
// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);
// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);
// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
Imports IronXL
Imports IronXl.Styles
' Create a new workbook
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Sales Report")
' Add headers
workSheet("A1").Value = "Product ID"
workSheet("B1").Value = "Product Name"
workSheet("C1").Value = "Q1 Sales"
workSheet("D1").Value = "Q2 Sales"
workSheet("E1").Value = "Q3 Sales"
workSheet("F1").Value = "Q4 Sales"
workSheet("G1").Value = "Total"
' Style headers
Dim headerRange = workSheet("A1:G1")
headerRange.Style.Font.Bold = True
headerRange.Style.BackgroundColor = "#4472C4"
headerRange.Style.Font.Color = "#FFFFFF"
' Add sample data
For i As Integer = 2 To 50
workSheet($"A{i}").Value = $"P{i - 1:D3}"
workSheet($"B{i}").Value = $"Product {i - 1}"
workSheet($"C{i}").Value = Random.Shared.Next(1000, 5000)
workSheet($"D{i}").Value = Random.Shared.Next(1000, 5000)
workSheet($"E{i}").Value = Random.Shared.Next(1000, 5000)
workSheet($"F{i}").Value = Random.Shared.Next(1000, 5000)
workSheet($"G{i}").Formula = $"=SUM(C{i}:F{i})"
Next
' Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1)
' Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6)
' Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx")
此範例展示如何透過"凍結區塊"功能,結合儲存格樣式與公式,來建立Professional報表。 當使用者捲動瀏覽這 50 行銷售資料時,標題列將保持可見。
效能考量
在大型試算表中實施"凍結欄位"時:
- 填入資料後請凍結工作表,以獲得最佳效能
- 建議使用條件格式化功能,在固定區塊中突顯重要資料
- 請使用目標資料量進行測試,以確保捲動效能流暢
對於處理大量資料集的應用程式,建議探索將資料匯出為不同格式,或搭配"凍結窗格"功能來實作分頁策略。
常見問題
何謂「凍結窗格」功能?它在 Excel 試算表中為何如此實用?
「凍結區塊」功能可將特定列與欄位固定在原位,讓使用者在捲動大型試算表時仍能持續看見這些內容。此功能對於在財務報表、員工資料庫或庫存清單中維持標題的可見性特別有用。IronXL 提供一個簡單的 CreateFreezePane 方法,讓開發者能在 C# 應用程式中透過程式碼實作此功能。
如何在 C# 中快速新增「凍結欄位」以鎖定標題列?
透過 IronXL,您只需一行程式碼,即可使用 CreateFreezePane 方法鎖定標題列。只需呼叫 workSheet.CreateFreezePane(1, 4) 即可凍結列與行。此操作會將 A 列與第 1 至 4 行固定在原位,同時允許試算表的其餘部分自由捲動。
在 CreateFreezePane 函式中,使用 2 個參數與 4 個參數有何差異?
IronXL 的 CreateFreezePane 方法提供兩種選項:使用 2 個參數(colSplit、rowSplit)可在指定位置建立基本的固定區塊;而使用 4 個參數則可新增預先捲動定位的固定區塊,以便對檢視區域進行更進階的控制。
在設定凍結窗格時,零基索引是如何運作的?
在 IronXL 的 CreateFreezePane 方法中,索引採用零起始制。第 0 欄指 A 欄,第 1 欄指 B 欄,依此類推。同樣地,列索引也從 0 開始。例如,CreateFreezePane(1, 4) 會建立一個從 A 欄開始、包含第 1 至 4 行的固定區塊。
為什麼我應該使用這個函式庫,而不是 Excel Interop 來凍結工作表區塊?
相較於 Excel Interop 解決方案,IronXL 提供更高效且更適合伺服器環境的解決方案。它無需在伺服器上安裝 Excel,針對大型資料集提供更佳的效能,並提供直覺的 API,該 API 不僅模擬 Excel 的原生功能,同時針對 .NET 應用程式進行了優化。
我可以將設有「凍結欄位」的試算表匯出為不同檔案格式嗎?
是的,在使用 IronXL 的 CreateFreezePane 方法設定「凍結區塊」後,您可以將試算表匯出為各種檔案格式,同時保留凍結區塊的功能。當儲存為受支援的 Excel 格式時,IronXL程式庫會保留這些設定。

