Jak dodać zamrożenie okienek w Excelu za pomocą C
W dużych arkuszach kalkulacyjnych Excel z ponad 50 wierszami lub kolumnami poza 'Z', przeglądanie danych przy jednoczesnej widoczności nagłówków staje się wyzwaniem. Funkcja zamrożenia okienek w C# zapewnia eleganckie rozwiązanie poprzez blokowanie określonych wierszy i kolumn na miejscu, umożliwiając pozostałym swobodne przewijanie.
Ta funkcja staje sie niezbedna podczas pracy z raportami finansowymi, bazami danych pracownikow lub listami inwentarzy, gdzie potrzebujesz stalej widocznosci naglowkow kolumn lub identyfikatorow wierszy. Dzięki bibliotece IronXl.Excel można programowo dodawać zamrożone okienka, aby usprawnić nawigację po danych i poprawić komfort użytkowania aplikacji .NET.
Szybki start: Zablokuj wiersze i kolumny nagłówka w jednym wierszu
Użyj prostej metody CreateFreezePane(colSplit, rowSplit), aby zamrozić wiersze lub kolumny w kilka sekund. Bez skomplikowanej konfiguracji — wystarczy załadować arkusz, wywołać tę metodę, a nagłówki pozostaną zablokowane u góry podczas przewijania.
-
Install IronXL with NuGet Package Manager
PM > Install-Package IronXl.Excel -
Skopiuj i uruchom ten fragment kodu.
workSheet.CreateFreezePane(1, 4); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronXL w swoim projekcie już dziś z darmową wersją próbną
Minimalny przepływ pracy (4 kroki)
Aby dodać zamrożony obszar do arkusza kalkulacyjnego, wykonaj następujące czynności:
- Zainstaluj bibliotekę C# wymaganą do zamrożenia okienka
- Użyj funkcji
CreateFreezePanez 2 parametrami, aby dodać zamrożony panel - Użyj funkcji
CreateFreezePanez 4 parametrami, aby dodać zamrożony panel z pozycją wstępnego przewinięcia - Wyeksportuj arkusz kalkulacyjny do wybranych formatów plików
Jak dodać opcję "Zablokuj okienko" w programie Excel?
Funkcja "Freeze panes" blokuje wiersze i kolumny, dzięki czemu pozostają one widoczne podczas przewijania. Ta funkcja utrzymuje kolumny lub wiersze nagłówków na miejscu, umożliwiając szybkie porównywanie informacji. Ta funkcja jest szczególnie przydatna podczas pracy z dużymi zbiorami danych lub gdy trzeba zachować kontekst podczas przeglądania rozbudowanych arkuszy kalkulacyjnych.
Funkcja zamrożenia okienka w IronXL naśladuje natywną funkcjonalność programu Excel, dzięki czemu jest intuicyjna dla programistów zaznajomionych z interfejsem Excela. W przeciwieństwie do rozwiązań Excel Interop, IronXL zapewnia bardziej wydajne i przyjazne dla serwera podejście do programowego wdrażania funkcji zamrażania okienek.
Jak działa CreateFreezePane z 2 parametrami?
Aby dodać zamrożenie okienka, użyj metody CreateFreezePane, określając kolumnę i wiersz, od którego powinno zacząć się zamrożenie. Określona kolumna i wiersz nie są uwzględnione w zamrożonym panelu. Na przykład workSheet.CreateFreezePane(1, 4) tworzy zamrożenie zaczynające się od kolumny A i wierszy 1 do 4.
Kluczowe znaczenie ma zrozumienie indeksowania od zera: kolumna 0 odnosi się do kolumny A, kolumna 1 do B i tak dalej. Indeksowanie wierszy odbywa się według tego samego schematu. Ta metoda jest idealna w sytuacjach, w których chcesz, aby nagłówki były widoczne podczas przewijania wpisów danych.
Poniższy przykład kodu pokazuje, jak utworzyć zamrożony panel, zaczynając od kolumny B i wiersza 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")
Jak wygląda funkcja "Freeze Pane" w praktyce?
Jak usunąć zamrożony panel?
Użyj metody RemovePane, aby usunąć wszystkie istniejące zamrożenia okienek z arkusza. Jest to przydatne, gdy trzeba zresetować widok lub zastosować inne ustawienia zamrożenia w oparciu o preferencje użytkownika lub zmiany danych.
: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()
Jakie są zaawansowane opcje zamrażania okienek?
Metoda CreateFreezePane oferuje zaawansowaną opcję tworzenia zamrożeń okienek z funkcjonalnością przewijania wstępnego. Ta funkcja jest przydatna, gdy chcesz skupić uwagę na konkretnym obszarze arkusza kalkulacyjnego, zachowując jednocześnie funkcjonalność zamrożonych okienek.
Kiedy należy używać 4 parametrów w zaawansowanym zamrażaniu okienek?
Ta metoda pozwala na dodanie zamrożonego panelu na podstawie określonej kolumny i wiersza początkowego. Dodatkowo umożliwia to zastosowanie przewijania w arkuszu. Jest to szczególnie przydatne podczas pracy z sformatowanymi raportami Excel, gdzie potrzebna jest precyzyjna kontrola nad początkowym widokiem.
Na przykład, użycie workSheet.CreateFreezePane(5, 2, 6, 7) tworzy zamrożenie, które obejmuje kolumny A-E i wiersze 1-2. Zawiera przewijanie w 1 kolumnie i 5 wierszach. Po otwarciu arkusza wyświetlane są kolumny A–E, G–... oraz wiersze 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")
Jak wygląda funkcja "Advanced Freeze Pane"?
Praktyczne przykłady zastosowania funkcji Freeze Panes
Zablokowane okienka są nieocenione w różnych sytuacjach biznesowych:
- Raporty finansowe: Zachowaj widoczność nagłówków miesięcy/kwartałów podczas przewijania danych rocznych
- Bazy danych pracowników: Blokowanie nazwisk i identyfikatorów pracowników podczas przeglądania wskaźników wydajności
- Zarządzanie zapasami: Poprawianie kodów i nazw produktów podczas sprawdzania stanów magazynowych
- Pulpity sprzedażowe: Zachowaj widoczność kategorii produktów podczas analizowania regionalnych danych dotyczących sprzedaży
W połączeniu z formułami programu Excel funkcja zamrażania okienek znacznie zwiększa wydajność analizy danych.
Pełny przykład: Tworzenie raportu danych z zamrożonymi okienkami
Oto obszerny przykład pokazujący, jak utworzyć sformatowany raport z zamrożonymi okienkami:
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")
Ten przykład pokazuje, jak zamrożone okienka współpracują ze stylami komórek i formułami w celu tworzenia profesjonalnych raportów. Wiersz nagłówka pozostaje widoczny, gdy użytkownicy przewijają 50 wierszy danych dotyczących sprzedaży.
Kwestie związane z wydajnością
Podczas wdrażania funkcji zamrażania okienek w dużych arkuszach kalkulacyjnych:
- Aby uzyskać optymalną wydajność, po wprowadzeniu danych należy zablokować okna
- Rozważ użycie formatowania warunkowego w celu wyróżnienia ważnych danych w sekcjach zamrożonych
- Przetestuj z docelową ilością danych, aby zapewnić płynne przewijanie
W przypadku aplikacji obsługujących obszerne zbiory danych warto rozważyć eksport do różnych formatów lub wdrożenie strategii paginacji wraz z zamrożeniem paneli.
Często Zadawane Pytania
Czym jest funkcja blokady i dlaczego jest przydatna w arkuszach kalkulacyjnych Excel?
Funkcja blokady utrzymuje w miejscu określone wiersze i kolumny, umożliwiając ich widoczność podczas przewijania dużych arkuszy kalkulacyjnych. Jest to szczególnie przydatne do utrzymania widoczności nagłówków w raportach finansowych, bazach danych pracowników lub listach inwentarza. IronXL udostępnia prostą metodę CreateFreezePane do implementacji tej funkcji programowo w aplikacjach C#.
Jak szybko dodać blokady, aby zablokować wiersze nagłówków w C#?
Dzięki IronXL można zablokować wiersze nagłówków w zaledwie jednej linii kodu przy użyciu metody CreateFreezePane. Wystarczy wywołać workSheet.CreateFreezePane(1, 4), aby zamrozić kolumny i wiersze. To blokuje kolumnę A i wiersze 1-4, jednocześnie umożliwiając swobodne przewijanie reszty arkusza.
Jaka jest różnica między użyciem 2 parametrów a 4 z CreateFreezePane?
Metoda CreateFreezePane w IronXL oferuje dwie opcje: użycie 2 parametrów (colSplit, rowSplit) tworzy podstawową blokadę od określonej pozycji, podczas gdy użycie 4 parametrów pozwala na dodanie blokad z wcześniej ustawionym pozycjonowaniem dla bardziej zaawansowanej kontroli nad obszarem widokowym.
Jak działa indeksowanie od zera przy ustawianiu blokad?
W metodzie CreateFreezePane IronXL, indeksowanie jest od zera. Kolumna 0 odnosi się do kolumny A, kolumna 1 do kolumny B i tak dalej. Podobnie, indeksowanie wierszy zaczyna się od 0. Na przykład, CreateFreezePane(1, 4) tworzy blokadę początkującą od kolumny A i obejmującą wiersze 1 do 4.
Dlaczego powinienem używać tej biblioteki zamiast Excel Interop do blokad?
IronXL zapewnia bardziej wydajne i przyjazne dla serwera podejście w porównaniu do rozwiązań Excel Interop. Nie wymaga zainstalowanego Excela na serwerze, oferuje lepszą wydajność dla dużych zestawów danych i zapewnia intuicyjne API, które imituje natywną funkcjonalność Excela, jednocześnie będąc zoptymalizowane dla aplikacji .NET.
Czy mogę eksportować arkusze z blokadami do różnych formatów plików?
Tak, po dodaniu blokad przy użyciu metody CreateFreezePane IronXL, można eksportować swój arkusz do różnych formatów plików, zachowując funkcjonalność blokady. Biblioteka zachowuje te ustawienia podczas zapisywania do obsługiwanych formatów Excela.

