Jak utworzyć plik Excel w C#

Jak dodać zamrożenie okienek w Excelu za pomocą C

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

  1. Install IronXL with NuGet Package Manager

    PM > Install-Package IronXl.Excel
  2. Skopiuj i uruchom ten fragment kodu.

    workSheet.CreateFreezePane(1, 4);
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronXL w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer


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")
$vbLabelText   $csharpLabel

Jak wygląda funkcja "Freeze Pane" w praktyce?

Freeze Pane in Action

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()
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

Jak wygląda funkcja "Advanced Freeze Pane"?

Demonstracja funkcji zamrażania okienek w programie Excel, pokazująca dane pracowników z zamrożonymi nagłówkami i kolumną ID; niebieska strzałka wskazuje granicę zamrożenia

Praktyczne przykłady zastosowania funkcji Freeze Panes

Zablokowane okienka są nieocenione w różnych sytuacjach biznesowych:

  1. Raporty finansowe: Zachowaj widoczność nagłówków miesięcy/kwartałów podczas przewijania danych rocznych
  2. Bazy danych pracowników: Blokowanie nazwisk i identyfikatorów pracowników podczas przeglądania wskaźników wydajności
  3. Zarządzanie zapasami: Poprawianie kodów i nazw produktów podczas sprawdzania stanów magazynowych
  4. 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")
$vbLabelText   $csharpLabel

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.

Zwróć uwagęMożna zastosować tylko jedno ustawienie zamrożenia okna. Każde dodatkowe utworzenie zamrożonego panelu spowoduje nadpisanie poprzedniego. Funkcja "Zablokuj okienko" nie działa w programie Microsoft Excel w wersjach 97–2003 (.xls).

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 1,950,735 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronXl.Excel
uruchom próbkę zobacz, jak Twoje dane stają się arkuszem.