如何使用 C# 在Excel試算表中新增凍結窗格
在大型建立Excel試算表的過程中,如果行數超過 50 行或列數超過 'Z',在檢視資料的同時又要保持標題可見,就變得相當具有挑戰性。 C# 中的 "凍結窗格 "功能提供了一個優雅的解決方案,它可以鎖定特定的行和列,同時允許其餘的行和列自由捲動。
當您處理財務報表、員工資料庫或庫存清單時,此功能變得非常重要,因為在這些情況下,您需要不斷查看列頭或行的識別碼。 透過 IronXL 的 Excel 函式庫,您可以程式化地在 .NET 應用程式中加入凍結窗格,以改善資料導覽和使用者體驗。
快速入門:將表頭列與表頭欄鎖定在同一行
使用簡單的 CreateFreezePane(colSplit, rowSplit) 方法,即可在幾秒內鎖定行或列。 無需複雜的設定 - 只需載入您的工作表,呼叫此方法,您的標題就會在捲動時鎖定在頂端。
最簡工作流程(4 個步驟)
若要新增凍結窗格,請依照下列步驟操作:
- 安裝凍結窗格所需的 C# 庫
- 使用帶有兩個參數的`CreateFreezePane`函數新增凍結窗格
- 使用4個參數的`CreateFreezePane`來新增預滾動定位的凍結窗格
- 將電子表格匯出為所需的文件格式
如何在 Excel 中新增凍結窗格?
凍結窗格可將行與列鎖定在原處,讓它們在捲動時仍然可見。 此功能可在快速比較資訊的同時,保持標題列或行的位置。 當使用大型資料集時,或當您需要在瀏覽大量試算表時保持上下文一致時,此功能尤其有價值。
IronXL.Excel 中的凍結窗格功能模仿 Excel 的原生功能,讓熟悉 Excel 介面的開發人員可以直覺地使用。 與 Excel Interop 解決方案不同,IronXL 提供了更有效率且伺服器友善的方法,以程式化的方式實作凍結窗格。
CreateFreezePane 如何使用 2 個參數工作?
若要新增固定視窗,請使用 CreateFreezePane 方法,並指定固定視窗應從哪一列及哪一行開始。 指定的列和行未包含在凍結窗格中。 例如,workSheet.CreateFreezePane(1, 4) 會建立一個從 A 欄和第 1 至 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")
What Does Freeze Pane Look Like in Action?
如何移除凍結窗格?
請使用 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) 可建立一個橫跨 A 至 E 欄位、1 至 2 行的凍結區塊。 它包含一個 1 列 5 行的捲軸。 工作表打開後,會顯示 列 A-E、G-... 和 行 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")
進階凍結窗格是什麼樣子?
凍結窗格的實用案例
凍結窗格在各種商業情境中都非常有價值:
1.財務報告:在捲動年度資料時保持月/季標題可見 2.員工資料庫:在檢視績效指標的同時鎖定員工姓名和 ID 3.庫存管理:在檢視庫存水平的同時修正產品代碼和名稱 4.銷售儀表板:在分析區域銷售資料的同時,維持產品類別的能見度
當結合 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")
本範例展示凍結窗格如何與 單元格樣式 和 公式 搭配使用,以建立專業的報表。 當使用者捲動 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 為基礎的。列 0 代表列 A,列 1 代表列 B,依此類推。例如,CreateFreezePane(1, 4)會從 A 列開始建立凍結窗格,並包含第 1 到第 4 行。
為何要使用此程式庫而非 Excel Interop 來凍結窗格?
相較於 Excel Interop 解決方案,IronXL.Excel 提供更有效率且伺服器友善的方法。它不需要在伺服器上安裝 Excel,為大型資料集提供更好的效能,並提供直覺的 API,可模仿 Excel 的原生功能,同時針對 .NET 應用程式進行最佳化。
我可以將具有凍結窗格的試算表匯出為不同的檔案格式嗎?
是的,使用 IronXL 的 CreateFreezePane 方法新增凍結窗格後,您可以將電子表格匯出為各種檔案格式,同時維持凍結窗格功能。當儲存為支援的 Excel 格式時,程式庫會保留這些設定。

