如何使用 C# 在 Excel 中添加冻结窗格 Copy for LLMsCopy for LLMs Copy page as Markdown for LLMs
# 如何使用 C# 在 Excel 中添加冻结窗格
在超过 50 行或超过 Z 列的大型 Excel 电子表格中,既要查看数据,又要保持标题可见是一项挑战。 C# 中的 "冻结窗格 "功能提供了一个优雅的解决方案,它可以锁定特定的行和列,同时允许其余行和列自由滚动。
在处理财务报告、员工数据库或库存清单等需要持续查看列标题或行标识符的工作时,该功能变得至关重要。 利用[IronXL的Excel库](https://ironsoftware.com/csharp/excel/docs/),您可以在[.NET应用程序](https://ironsoftware.com/csharp/excel/how-to/c-sharp-open-excel-worksheet/)中以编程方式添加冻结窗格,以改善数据导航和用户体验。
*as-heading:2(快速入门:用一行代码锁定标题行和列)*
使用简单的`CreateFreezePane(colSplit, rowSplit)`方法秒级冻结行或列。 无需复杂的设置--只需加载您的工作表,调用此方法,您的标题就会在滚动时锁定在顶部。
```cs
:title=Freeze Headers Instantly with IronXL
workSheet.CreateFreezePane(1, 4);
```
<div class="hsg-featured-snippet">
<h3>最小工作流程(4 个步骤)</h3>
<p>要向电子表格添加冻结窗格,请按照以下步骤操作:</p>
<img class="featured-snippet__image featured-snippet__image--float-right featured-snippet__image--new-template" src="/static-assets/excel/images/How-to-Add-Freeze-Panes.webp" alt="IronXL C# 教程:添加冻结窗格的 4 个步骤——安装库、使用 CreateFreezePane 方法、导出电子表格" />
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronXL.Excel/">安装冻结窗格所需的 C# 库</a></li>
<li>使用带有<a href="#anchor-createfreezepane-int-column-int-row">两个参数的</a><code>CreateFreezePane</code>函数添加冻结窗格</li>
<li>使用 <a href="#anchor-createfreezepane-int-column-int-row-int-subsequentcolumn-int-subsequentrow">4 个参数</a>的 <code>CreateFreezePane</code> 添加预滚动定位的冻结窗格</li>
<li>将电子表格导出为所需的<a href="/csharp/excel/how-to/c-sharp-export-to-excel/">文件格式</a></li>
</ol>
</div>
<br class="clear" />
## 如何在 Excel 中添加冻结窗格?
冻结窗格可将行和列锁定在原位,使其在滚动时保持可见。 该功能可在快速比较信息的同时保持页眉列或行的位置不变。 当[处理大型数据集](https://ironsoftware.com/csharp/excel/how-to/load-spreadsheet/)或在浏览大量电子表格时需要保持上下文一致时,该功能尤为重要。
IronXL.Excel 中的冻结窗格功能模仿了 Excel 的本地功能,对于熟悉 Excel 界面的开发人员来说非常直观。 与[Excel Interop 解决方案](https://ironsoftware.com/csharp/excel/get-started/c-sharp-excel-interop/)不同,IronXL 提供了一种更高效、服务器友好的方法,以编程方式实现冻结窗格。
### CreateFreezePane 如何使用 2 个参数工作?
要添加冻结窗格,请使用`CreateFreezePane`方法,指定冻结窗格应该开始的列和行。 指定的列和行未包含在冻结窗格中。 例如,`rows 1 to 4`开始的冻结窗格。
理解基于零的索引至关重要:第 0 列指 A 列,第 1 列指 B 列,依此类推。 行索引采用相同的模式。 这种方法非常适合在滚动浏览数据条目时保持标题可见的情况。
以下代码示例演示了如何从 B 列第 4 行开始创建冻结窗格:
```csharp
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");
```
### 冻结窗格的实际效果如何?
<img src="/static-assets/excel/how-to/add-freeze-panes/add-freeze-panes-add.gif" alt="冻结窗格实际操作" class="img-responsive add-shadow" style="margin-bottom: 30px;"/>
## 如何移除冻结窗格?
使用`RemovePane`方法从您的电子表格中移除所有现有冻结窗格。 当您需要根据用户偏好或数据变化重置视图或应用不同的冻结设置时,这将非常有用。
```csharp
// Remove all existing freeze or split pane
workSheet.RemovePane();
```
## 高级冻结窗格选项有哪些?
`CreateFreezePane`方法提供了一种高级选项,可以创建具有预滚动功能的冻结窗格。 当您希望在保持冻结窗格功能的同时,将注意力集中在电子表格的特定区域时,该功能非常有用。
### 何时应使用高级冻结面板的 4 个参数?
此方法允许您根据指定的起始列和行添加冻结窗格。 此外,它还允许您在工作表中应用滚动功能。 在使用 [格式化 Excel 报告](https://ironsoftware.com/csharp/excel/how-to/cell-font-size/)时,如果需要精确控制初始视图,这一点尤其重要。
例如,使用`rows 1-2`的冻结窗格。 它包含一个 1 列 5 行的滚动条。 当工作表打开时,它会显示`rows 1-2, 8-...`。
```csharp
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");
```
### 高级冻结窗格看起来像什么?
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/static-assets/excel/how-to/add-freeze-panes/add-freeze-panes-advance.png" alt="Excel 冻结窗格演示,显示带有冻结标题和 ID 列的员工数据,蓝色箭头表示冻结边界" class="img-responsive add-shadow" />
</div>
</div>
## 冻结面板的实际使用案例
冻结面板在各种业务场景中都非常宝贵:
1.**财务报告**:在滚动浏览年度数据时保持月/季度标题可见
2.**员工数据库**:在查看绩效指标的同时锁定员工姓名和 ID
3.**库存管理**:在查看库存水平时修正产品代码和名称
4.**销售仪表板**:在分析区域销售数据的同时保持产品类别的可见性
当与[Excel 公式](https://ironsoftware.com/csharp/excel/how-to/edit-formulas/)结合使用时,冻结窗格可显著提高数据分析效率。
## 完整示例:使用冻结面板构建数据报告
下面是一个综合示例,展示了如何使用冻结窗格创建格式化报告:
```csharp
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
for (int col = 0; col <= 6; col++)
{
workSheet.AutoSizeColumn(col);
}
// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
```
本示例演示了冻结窗格如何与 [ 单元样式](https://ironsoftware.com/csharp/excel/how-to/border-alignment/)和 [ 公式](https://ironsoftware.com/csharp/excel/how-to/math-functions/)配合使用,以创建专业报告。 当用户滚动浏览 50 行销售数据时,标题行仍然可见。
## 性能考虑
在大型电子表格中实施冻结窗格时:
- 在填充数据后应用冻结窗格以获得最佳性能
- 考虑使用[条件格式](https://ironsoftware.com/csharp/excel/how-to/conditional-formatting/)突出显示冻结部分的重要数据
- 使用目标数据量进行测试,确保流畅的滚动性能
对于处理大量数据集的应用程序,可探讨 [ 导出到不同格式](https://ironsoftware.com/csharp/excel/how-to/convert-spreadsheet-file-types/)或在冻结窗格旁实施分页策略。
[[i:(只能应用一个冻结窗格设置。 任何后续创建的冻结窗格都会覆盖之前的冻结窗格。 冻结窗格不适用于微软Excel 97-2003版本(.xls)。)]]
Ask ChatGPT about this page
Ask Gemini about this page
Ask Perplexity about this page
在超过 50 行或超过 Z 列的大型 Excel 电子表格中,既要查看数据,又要保持标题可见是一项挑战。 C# 中的 "冻结窗格 "功能提供了一个优雅的解决方案,它可以锁定特定的行和列,同时允许其余行和列自由滚动。
在处理财务报告、员工数据库或库存清单等需要持续查看列标题或行标识符的工作时,该功能变得至关重要。 利用IronXL的Excel库 ,您可以在.NET应用程序 中以编程方式添加冻结窗格,以改善数据导航和用户体验。
使用简单的CreateFreezePane(colSplit, rowSplit)方法秒级冻结行或列。 无需复杂的设置--只需加载您的工作表,调用此方法,您的标题就会在滚动时锁定在顶部。
1 Install IronXL with NuGet Package Manager
PM > Install-Package IronXL.Excel
Install-Package IronXL.Excel
2 复制并运行这段代码。
workSheet. CreateFreezePane ( 1 , 4 );
workSheet.CreateFreezePane(1, 4);
C#
3 部署到您的生产环境中进行测试
通过免费试用 立即在您的项目中开始使用IronXL
免费试用30天
如何在 Excel 中添加冻结窗格?
冻结窗格可将行和列锁定在原位,使其在滚动时保持可见。 该功能可在快速比较信息的同时保持页眉列或行的位置不变。 当处理大型数据集 或在浏览大量电子表格时需要保持上下文一致时,该功能尤为重要。
IronXL.Excel 中的冻结窗格功能模仿了 Excel 的本地功能,对于熟悉 Excel 界面的开发人员来说非常直观。 与Excel Interop 解决方案 不同,IronXL 提供了一种更高效、服务器友好的方法,以编程方式实现冻结窗格。
CreateFreezePane 如何使用 2 个参数工作?
要添加冻结窗格,请使用CreateFreezePane方法,指定冻结窗格应该开始的列和行。 指定的列和行未包含在冻结窗格中。 例如,rows 1 to 4开始的冻结窗格。
理解基于零的索引至关重要:第 0 列指 A 列,第 1 列指 B 列,依此类推。 行索引采用相同的模式。 这种方法非常适合在滚动浏览数据条目时保持标题可见的情况。
以下代码示例演示了如何从 B 列第 4 行开始创建冻结窗格:
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" ); 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" ) 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方法从您的电子表格中移除所有现有冻结窗格。 当您需要根据用户偏好或数据变化重置视图或应用不同的冻结设置时,这将非常有用。
// Remove all existing freeze or split pane
workSheet. RemovePane (); // Remove all existing freeze or split pane
workSheet.RemovePane();
' Remove all existing freeze or split pane
workSheet. RemovePane () ' Remove all existing freeze or split pane
workSheet.RemovePane()
高级冻结窗格选项有哪些?
CreateFreezePane方法提供了一种高级选项,可以创建具有预滚动功能的冻结窗格。 当您希望在保持冻结窗格功能的同时,将注意力集中在电子表格的特定区域时,该功能非常有用。
何时应使用高级冻结面板的 4 个参数?
此方法允许您根据指定的起始列和行添加冻结窗格。 此外,它还允许您在工作表中应用滚动功能。 在使用 格式化 Excel 报告 时,如果需要精确控制初始视图,这一点尤其重要。
例如,使用rows 1-2的冻结窗格。 它包含一个 1 列 5 行的滚动条。 当工作表打开时,它会显示rows 1-2, 8-...。
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" ); 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" ) 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
for ( int col = 0 ; col <= 6 ; col++)
{
workSheet. AutoSizeColumn (col);
}
// 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
for (int col = 0; col <= 6; col++)
{
workSheet.AutoSizeColumn(col);
}
// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
C#
本示例演示了冻结窗格如何与 单元样式 和 公式 配合使用,以创建专业报告。 当用户滚动浏览 50 行销售数据时,标题行仍然可见。
性能考虑
在大型电子表格中实施冻结窗格时:
在填充数据后应用冻结窗格以获得最佳性能
考虑使用条件格式 突出显示冻结部分的重要数据
使用目标数据量进行测试,确保流畅的滚动性能
对于处理大量数据集的应用程序,可探讨 导出到不同格式 或在冻结窗格旁实施分页策略。
只能应用一个冻结窗格设置。 任何后续创建的冻结窗格都会覆盖之前的冻结窗格。 冻结窗格不适用于微软Excel 97-2003版本(.xls)。
常见问题解答 冻结窗格功能可锁定特定的行和列,使其在滚动浏览大型电子表格时保持可见。这对于保持财务报告、员工数据库或库存清单中标题的可见性尤为有用。IronXL 提供了一个简单的 CreateFreezePane 方法,可在 C# 应用程序中以编程方式实现该功能。
using IronXL,只需一行代码,您就可以使用 CreateFreezePane 方法锁定标题行。只需调用 workSheet.CreateFreezePane(1, 4) 即可冻结列和行。这将锁定列 A 和第 1-4 行,同时允许电子表格的其他部分自由滚动。
IronXL 的 CreateFreezePane 方法提供两种选项:使用 2 个参数(colSplit、rowSplit)可从指定位置创建基本的冻结窗格,而使用 4 个参数则可添加具有预滚动定位功能的冻结窗格,从而对查看区域进行更高级的控制。
在 IronXL 的 CreateFreezePane 方法中,索引是基于 0 的。列 0 表示列 A,列 1 表示列 B,以此类推。同样,行索引从 0 开始。 例如,CreateFreezePane(1, 4) 从 A 列开始创建冻结窗格,包括第 1 至 4 行。
与 Excel Interop 解决方案相比,IronXL.Excel 提供了一种更高效、服务器友好的方法。它不需要在服务器上安装 Excel,为大型数据集提供更好的性能,并提供直观的 API,在模仿 Excel 本机功能的同时针对 .NET 应用程序进行了优化。
是的,使用 IronXL 的 CreateFreezePane 方法添加冻结窗格后,您可以将电子表格导出为各种文件格式,同时保持冻结窗格功能。在保存为支持的 Excel 格式时,库会保留这些设置。
Yes, you can set freeze panes and use pre-scrolling functionality to focus on specific areas of your spreadsheet when it opens.
IronXL's freeze pane functionality does not work with Microsoft Excel versions 97-2003 (.xls) and only one freeze pane setting can be applied at a time, which will overwrite the previous one.
IronXL is designed for use within C# .NET applications, allowing developers to integrate Excel functionalities programmatically in this environment.
IronXL provides a more efficient, server-friendly approach to implementing freeze panes compared to Excel Interop solutions, making it ideal for high-performance applications.
技术作家
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
...
阅读更多