Jak tworzyć arkusze Excel w C# .NET Core używając IronXL
Programowe generowanie arkuszy kalkulacyjnych Excel w ASP.NET Core otwiera potężne możliwości automatyzacji — od sprawozdawczości finansowej i śledzenia zapasów po eksport danych i automatyczne pulpity nawigacyjne. W tworzeniu aplikacji internetowych integracja generowania arkuszy kalkulacyjnych Excel w .NET Core poprawia dostępność danych i raportowanie, umożliwiając użytkownikom interakcję ze złożonymi zbiorami danych oraz wyciąganie z nich cennych wniosków. Dzięki IronXL for .NET programiści mogą tworzyć pliki Excel bez instalowania pakietu Microsoft Office lub korzystania z Office Interop. Ta wielopłatformowa biblioteka IronXL działa w systemach Windows, Linux i macOS, co czyni ją idealnym rozwiązaniem dla nowoczesnych aplikacji opartych na danych, wdrażanych w chmurze Azure lub w kontenerach Docker.
Ten samouczek przeprowadza użytkownika przez proces tworzenia arkuszy kalkulacyjnych Excel w środowisku .NET Core z profesjonalnym formatowaniem, formułami i wieloma opcjami eksportu. Niezależnie od tego, czy tworzysz aplikacje internetowe ASP.NET Core, aplikacje konsolowe czy usługi działające w tle, techniki te mają zastosowanie we wszystkich aplikacjach .NET 10. Na koniec będziesz mieć działający kod do generowania gotowych do użycia plików Excel, które integrują się z istniejącymi projektami w Visual Studio lub dowolnym środowisku programistycznym .NET.
Jak zainstalować IronXL w projekcie .NET Core?
Przed utworzeniem arkuszy kalkulacyjnych należy dodać IronXL do projektu. Otwórz konsolę menedżera pakietów NuGet w programie Visual Studio i uruchom jedno z poniższych poleceń:
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
Pierwsze polecenie działa w konsoli menedżera pakietów Visual Studio. Drugi działa w dowolnym terminalu przy użyciu .NET CLI. Oba instalują ten sam pakiet NuGet i automatycznie dodają IronXL do odwołań projektu.
Po zakończeniu instalacji IronXL jest gotowy do użycia za pomocą pojedynczej dyrektywy using. Biblioteka nie wymaga żadnej dodatkowej konfiguracji, zależności środowiskowych ani instalacji pakietu Microsoft Office. Działa na każdej platformie, na której działa .NET 10 — Windows, Linux, macOS lub dowolnym środowisku chmurowym.
Szczegółowe opcje instalacji, w tym ręczne pobieranie plików DLL, można znaleźć w instrukcji instalacji IronXL. Programiści korzystający z systemu Linux powinni również zapoznać się z dokumentacją wdrożeniową dla systemu Linux, aby uzyskać wskazówki dotyczące konkretnej platformy.

Jak utworzyć arkusz kalkulacyjny Excel bez zależności od pakietu Office?
Tradycyjna automatyzacja w programie Microsoft Excel wymaga instalacji pakietu MS Office i wykorzystuje interfejs Office Interop, który nie działa w systemie Linux ani w środowiskach kontenerowych. Jak wspomniano w dokumentacji Microsoftu dotyczącej Office Interop, Office Interop wiąże się ze złożonością wdrożenia i kwestiami licencyjnymi. IronXL for .NET eliminuje te ograniczenia, zapewniając czyste rozwiązanie .NET, które przetwarza pliki Excel natywnie, z pełną obsługą nowoczesnych funkcji arkusza kalkulacyjnego.
Biblioteka obsługuje .NET 8, .NET 9 i .NET 10, a także wcześniejsze wersje .NET Core. Obsługuje formaty XLSX, XLS, CSV i inne formaty arkuszy kalkulacyjnych bez zewnętrznych zależności. To sprawia, że jest to szczególnie przydatne w przypadku aplikacji po stronie serwera, mikrousług oraz w sytuacjach, w których instalacja pakietu Microsoft Office nie jest praktyczna. Łatwa integracja za pośrednictwem NuGet oznacza, że możesz zacząć tworzyć pliki Excel w ciągu kilku minut:
using IronXL;
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add an Excel worksheet with a custom name
WorkSheet sheet = workbook.CreateWorkSheet("SalesReport");
// Set a cell value
sheet["A1"].Value = "Product Sales Summary";
// Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx");
using IronXL;
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add an Excel worksheet with a custom name
WorkSheet sheet = workbook.CreateWorkSheet("SalesReport");
// Set a cell value
sheet["A1"].Value = "Product Sales Summary";
// Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx");
Imports IronXL
' Create a new workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add an Excel worksheet with a custom name
Dim sheet As WorkSheet = workbook.CreateWorkSheet("SalesReport")
' Set a cell value
sheet("A1").Value = "Product Sales Summary"
' Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx")
Metoda WorkBook.Create() inicjuje nowy skoroszyt programu Excel, przyjmując parametr ExcelFileFormat w celu określenia formatu XLSX (nowoczesny format oparty na XML wprowadzony w programie Excel 2007) lub XLS (starszy format binarny). W większości przypadków zaleca się stosowanie formatu XLSX ze względu na mniejszy rozmiar plików i lepszą kompatybilność z nowoczesnymi narzędziami. Metoda CreateWorkSheet() dodaje nazwane arkusze, w których znajdują się dane programu Excel — każdy skoroszyt może zawierać wiele pojedynczych arkuszy służących do organizowania powiązanych danych.
Wartości komórek są ustawiane przy użyciu notacji nawiasowej, która odzwierciedla system adresowania programu Excel — sheet["A1"] odnosi się bezpośrednio do komórki A1. Ta składnia obsługuje zarówno konkretne komórki, jak i zakresy, co sprawia, że operacje zbiorcze są proste w przypadku każdego projektu arkusza kalkulacyjnego.
Wynik

Jak programowo dodawać arkusze i wypełniać je danymi?
W rzeczywistych arkuszach kalkulacyjnych Excel dane ustrukturyzowane znajdują się w wielu arkuszach. IronXL zapewnia elastyczne metody organizowania informacji i wydajnego wypełniania komórek, niezależnie od tego, czy pracujesz z ręcznym wprowadzaniem danych, czy z automatycznymi potokami danych w aplikacjach opartych na danych.
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("MonthlySales");
// Set column names as headers
sheet["A1"].Value = "Month";
sheet["B1"].Value = "Revenue";
sheet["C1"].Value = "Units Sold";
// Populate Excel data using a loop (mock sales data)
string[] months = { "January", "February", "March", "April", "May", "June" };
decimal[] revenue = { 45000.50m, 52000.75m, 48500.25m, 61000.00m, 58750.50m, 67200.25m };
int[] units = { 150, 175, 160, 200, 190, 220 };
for (int i = 0; i < months.Length; i++)
{
int row = i + 2;
sheet[$"A{row}"].Value = months[i];
sheet[$"B{row}"].Value = revenue[i];
sheet[$"C{row}"].Value = units[i];
}
// Set a range of cells to the same value across columns
sheet["D2:D7"].Value = "Active";
workbook.SaveAs("MonthlySales.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("MonthlySales");
// Set column names as headers
sheet["A1"].Value = "Month";
sheet["B1"].Value = "Revenue";
sheet["C1"].Value = "Units Sold";
// Populate Excel data using a loop (mock sales data)
string[] months = { "January", "February", "March", "April", "May", "June" };
decimal[] revenue = { 45000.50m, 52000.75m, 48500.25m, 61000.00m, 58750.50m, 67200.25m };
int[] units = { 150, 175, 160, 200, 190, 220 };
for (int i = 0; i < months.Length; i++)
{
int row = i + 2;
sheet[$"A{row}"].Value = months[i];
sheet[$"B{row}"].Value = revenue[i];
sheet[$"C{row}"].Value = units[i];
}
// Set a range of cells to the same value across columns
sheet["D2:D7"].Value = "Active";
workbook.SaveAs("MonthlySales.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("MonthlySales")
' Set column names as headers
sheet("A1").Value = "Month"
sheet("B1").Value = "Revenue"
sheet("C1").Value = "Units Sold"
' Populate Excel data using a loop (mock sales data)
Dim months As String() = {"January", "February", "March", "April", "May", "June"}
Dim revenue As Decimal() = {45000.5D, 52000.75D, 48500.25D, 61000.0D, 58750.5D, 67200.25D}
Dim units As Integer() = {150, 175, 160, 200, 190, 220}
For i As Integer = 0 To months.Length - 1
Dim row As Integer = i + 2
sheet($"A{row}").Value = months(i)
sheet($"B{row}").Value = revenue(i)
sheet($"C{row}").Value = units(i)
Next
' Set a range of cells to the same value across columns
sheet("D2:D7").Value = "Active"
workbook.SaveAs("MonthlySales.xlsx")
Interpolacja ciągów znaków ($"A{row}") umożliwia dynamiczne adresowanie komórek w pętlach, co ułatwia programowe wypełnianie wierszy danymi z dowolnego źródła. Składnia zakresu sheet["D2:D7"] stosuje wartości do wielu komórek jednocześnie — przydatne w kolumnach statusu, wartościach domyślnych lub inicjalizacji obszarów danych. IronXL automatycznie obsługuje konwersję typów danych, zapisując liczby dziesiętne jako wartości numeryczne, a treść łańcuchów znaków jako tekst, zachowując jednocześnie odpowiednie typy danych programu Excel dla generowanego pliku.
Praca z wieloma arkuszami
Tworzenie wielu arkuszy pozwala na logiczne uporządkowanie powiązanych danych Excel w ramach jednego skoroszytu:
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
WorkSheet detailSheet = workbook.CreateWorkSheet("Details");
WorkSheet archiveSheet = workbook.CreateWorkSheet("Archive");
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
WorkSheet detailSheet = workbook.CreateWorkSheet("Details");
WorkSheet archiveSheet = workbook.CreateWorkSheet("Archive");
Dim summarySheet As WorkSheet = workbook.CreateWorkSheet("Summary")
Dim detailSheet As WorkSheet = workbook.CreateWorkSheet("Details")
Dim archiveSheet As WorkSheet = workbook.CreateWorkSheet("Archive")
W przypadku aplikacji wymagających integracji z bazą danych IronXL współpracuje z Entity Framework Core, Dapper lub surowym ADO.NET. Dane z obiektów DataTable można eksportować bezpośrednio do arkuszy kalkulacyjnych, co upraszcza procesy tworzenia raportów i pozwala użytkownikom na wymianę danych między systemami.
Więcej informacji na temat zarządzania arkuszami i pisania plików Excel znajdziesz w dokumentacji. Aby przeczytać istniejący plik Excel, zapoznaj się z samouczkiem dotyczącym ładowania plików Excel.
Wynik

Jak zastosować profesjonalne formatowanie i stylizację?
Surowe dane nabierają znaczenia, gdy są odpowiednio sformatowane. IronXL obsługuje kolory tła, czcionki, obramowania i formaty liczb — niezbędne funkcje formatowania, które przekształcają arkusze kalkulacyjne Excel w dopracowane raporty nadające się do prezentacji dla kadry kierowniczej lub dostarczania klientom.
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("FormattedReport");
// Create headers with styling
sheet["A1"].Value = "Category";
sheet["B1"].Value = "Amount";
sheet["C1"].Value = "Date";
// Apply header formatting to the Excel sheet
sheet["A1:C1"].Style.SetBackgroundColor("#2E86AB");
sheet["A1:C1"].Style.Font.Bold = true;
sheet["A1:C1"].Style.Font.SetColor("#FFFFFF");
// Add sample data to specific cells
sheet["A2"].Value = "Software License";
sheet["B2"].Value = 1299.99m;
sheet["C2"].Value = DateTime.Niew;
// Format currency and date columns
sheet["B2"].FormatString = "$#,##0.00";
sheet["C2"].FormatString = "yyyy-MM-dd";
// Add borders around the data range
var dataRange = sheet["A1:C2"];
dataRange.Style.BottomBorder.SetColor("#000000");
dataRange.Style.BottomBorder.Type = IronXl.Styles.BorderType.Thin;
workbook.SaveAs("FormattedReport.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("FormattedReport");
// Create headers with styling
sheet["A1"].Value = "Category";
sheet["B1"].Value = "Amount";
sheet["C1"].Value = "Date";
// Apply header formatting to the Excel sheet
sheet["A1:C1"].Style.SetBackgroundColor("#2E86AB");
sheet["A1:C1"].Style.Font.Bold = true;
sheet["A1:C1"].Style.Font.SetColor("#FFFFFF");
// Add sample data to specific cells
sheet["A2"].Value = "Software License";
sheet["B2"].Value = 1299.99m;
sheet["C2"].Value = DateTime.Niew;
// Format currency and date columns
sheet["B2"].FormatString = "$#,##0.00";
sheet["C2"].FormatString = "yyyy-MM-dd";
// Add borders around the data range
var dataRange = sheet["A1:C2"];
dataRange.Style.BottomBorder.SetColor("#000000");
dataRange.Style.BottomBorder.Type = IronXl.Styles.BorderType.Thin;
workbook.SaveAs("FormattedReport.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("FormattedReport")
' Create headers with styling
sheet("A1").Value = "Category"
sheet("B1").Value = "Amount"
sheet("C1").Value = "Date"
' Apply header formatting to the Excel sheet
sheet("A1:C1").Style.SetBackgroundColor("#2E86AB")
sheet("A1:C1").Style.Font.Bold = True
sheet("A1:C1").Style.Font.SetColor("#FFFFFF")
' Add sample data to specific cells
sheet("A2").Value = "Software License"
sheet("B2").Value = 1299.99D
sheet("C2").Value = DateTime.Now
' Format currency and date columns
sheet("B2").FormatString = "$#,##0.00"
sheet("C2").FormatString = "yyyy-MM-dd"
' Add borders around the data range
Dim dataRange = sheet("A1:C2")
dataRange.Style.BottomBorder.SetColor("#000000")
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin
workbook.SaveAs("FormattedReport.xlsx")
Właściwość Style udostępnia opcje formatowania odpowiadające możliwościom programu Microsoft Excel. Kolory tła akceptują kody szesnastkowe (z prefiksem # lub bez), natomiast FormatString stosuje formaty liczb identyczne z składnią formatowania niestandardowego programu Excel — te same wzorce działają w obu środowiskach. Stylowanie obramowań obsługuje typy Cienkie, Średnie, Grube i Podwójne, umożliwiając precyzyjną kontrolę nad granicami komórek w arkuszu Excel.
Zaawansowane techniki formatowania
W przypadku arkuszy kalkulacyjnych Excel zawierających obszerne dane funkcja CreateFreezePane(0, 1) pozwala zachować widoczność nagłówków podczas przewijania — to subtelne ulepszenie, które znacznie poprawia użyteczność w przypadku dużych zbiorów danych. Konfiguracja drukowania za pomocą sheet.PrintSetup obejmuje orientację, marginesy i skalowanie wydruku.
Zapoznaj się z dodatkowymi opcjami stylizacji w przewodniku po formatowaniu komórek oraz samouczku dotyczącym konfiguracji obramowań. Narzędzia te zapewniają pełną kontrolę nad każdym aspektem wyglądu komórek.
Jak korzystać z formuł programu Excel do automatycznych obliczeń?
Silnik obliczeniowy programu Excel automatyzuje analizę danych, a IronXL zapewnia pełną obsługę formuł. Ustaw formuły jako ciągi znaków przy użyciu standardowej składni programu Excel, a IronXL automatycznie obliczy wyniki na żądanie — jest to niezbędne do tworzenia raportów i analiz finansowych.
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("BudgetCalculations");
// Add expense data to the Excel workbook
sheet["A1"].Value = "Expense";
sheet["B1"].Value = "Amount";
sheet["A2"].Value = "Rent";
sheet["B2"].Value = 2500;
sheet["A3"].Value = "Utilities";
sheet["B3"].Value = 350;
sheet["A4"].Value = "Supplies";
sheet["B4"].Value = 875;
sheet["A5"].Value = "Marketing";
sheet["B5"].Value = 1200;
// Add formulas for calculations
sheet["A7"].Value = "Total:";
sheet["B7"].Formula = "=SUM(B2:B5)";
sheet["A8"].Value = "Average:";
sheet["B8"].Formula = "=AVERAGE(B2:B5)";
sheet["A9"].Value = "Maximum:";
sheet["B9"].Formula = "=MAX(B2:B5)";
sheet["A10"].Value = "Count:";
sheet["B10"].Formula = "=COUNT(B2:B5)";
// Calculate all formulas
workbook.EvaluateAll();
// Access calculated values programmatically
decimal total = sheet["B7"].DecimalValue;
Console.WriteLine($"Calculated total: {total}");
workbook.SaveAs("BudgetCalculations.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("BudgetCalculations");
// Add expense data to the Excel workbook
sheet["A1"].Value = "Expense";
sheet["B1"].Value = "Amount";
sheet["A2"].Value = "Rent";
sheet["B2"].Value = 2500;
sheet["A3"].Value = "Utilities";
sheet["B3"].Value = 350;
sheet["A4"].Value = "Supplies";
sheet["B4"].Value = 875;
sheet["A5"].Value = "Marketing";
sheet["B5"].Value = 1200;
// Add formulas for calculations
sheet["A7"].Value = "Total:";
sheet["B7"].Formula = "=SUM(B2:B5)";
sheet["A8"].Value = "Average:";
sheet["B8"].Formula = "=AVERAGE(B2:B5)";
sheet["A9"].Value = "Maximum:";
sheet["B9"].Formula = "=MAX(B2:B5)";
sheet["A10"].Value = "Count:";
sheet["B10"].Formula = "=COUNT(B2:B5)";
// Calculate all formulas
workbook.EvaluateAll();
// Access calculated values programmatically
decimal total = sheet["B7"].DecimalValue;
Console.WriteLine($"Calculated total: {total}");
workbook.SaveAs("BudgetCalculations.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("BudgetCalculations")
' Add expense data to the Excel workbook
sheet("A1").Value = "Expense"
sheet("B1").Value = "Amount"
sheet("A2").Value = "Rent"
sheet("B2").Value = 2500
sheet("A3").Value = "Utilities"
sheet("B3").Value = 350
sheet("A4").Value = "Supplies"
sheet("B4").Value = 875
sheet("A5").Value = "Marketing"
sheet("B5").Value = 1200
' Add formulas for calculations
sheet("A7").Value = "Total:"
sheet("B7").Formula = "=SUM(B2:B5)"
sheet("A8").Value = "Average:"
sheet("B8").Formula = "=AVERAGE(B2:B5)"
sheet("A9").Value = "Maximum:"
sheet("B9").Formula = "=MAX(B2:B5)"
sheet("A10").Value = "Count:"
sheet("B10").Formula = "=COUNT(B2:B5)"
' Calculate all formulas
workbook.EvaluateAll()
' Access calculated values programmatically
Dim total As Decimal = sheet("B7").DecimalValue
Console.WriteLine($"Calculated total: {total}")
workbook.SaveAs("BudgetCalculations.xlsx")
Właściwość Formula akceptuje standardową składnię formuł programu Excel — działają tu te same formuły, co w programie Microsoft Excel. Po ustawieniu formuł wywołaj EvaluateAll(), aby obliczyć wyniki. Ten krok zapewnia, że obliczone wartości są natychmiast dostępne poprzez właściwości typowane, takie jak DecimalValue, IntValue lub StringValue. Bez wywołania EvaluateAll() formuły nadal są poprawnie zapisywane i obliczane po otwarciu w programie Excel, ale programowy dostęp do wyników wymaga najpierw ich oceny.
Wynik


IronXL obsługuje ponad 150 funkcji programu Excel, w tym operacje matematyczne (SUM, AVERAGE, ROUND), funkcje statystyczne (COUNT, MAX, MIN, STDEV), operacje na tekście (CONCATENATE, LEFT, RIGHT) oraz operacje logiczne (IF, AND, OR). Zapoznaj się z przewodnikiem po edycji formuł, aby uzyskać informacje na temat zaawansowanych scenariuszy, w tym odwołań do komórek w różnych arkuszach.
Wbudowane metody agregacji
W prostszych scenariuszach, w których formuły nie muszą być zachowane w pliku Excel, IronXL oferuje wbudowane metody agregacji:
decimal sum = sheet["B2:B5"].Sum();
decimal avg = sheet["B2:B5"].Avg();
decimal max = sheet["B2:B5"].Max();
decimal sum = sheet["B2:B5"].Sum();
decimal avg = sheet["B2:B5"].Avg();
decimal max = sheet["B2:B5"].Max();
Dim sum As Decimal = sheet("B2:B5").Sum()
Dim avg As Decimal = sheet("B2:B5").Avg()
Dim max As Decimal = sheet("B2:B5").Max()
Metody te oferują natywną dla języka C# alternatywę, gdy obliczenia nie muszą być widoczne w arkuszu kalkulacyjnym w postaci formuł. Obiektowe API zapewnia czytelność kodu i bezpieczeństwo typów bez konieczności stosowania składni formuł opartych na ciągach znaków.
Jak eksportować pliki Excel i udostępniać je do pobrania?
IronXL obsługuje wiele formatów eksportu, aby spełnić różne wymagania integracyjne. Oprócz standardowych formatów Excel, arkusze kalkulacyjne można eksportować do formatu CSV w celu wymiany danych, JSON dla aplikacji internetowych lub TSV w celu zapewnienia kompatybilności ze starszymi systemami. Ta elastyczność ułatwia włączenie generowania plików Excel do dowolnego przepływu pracy.
using IronXL;
WorkBook workbook = WorkBook.Load("BudgetCalculations.xlsx");
// Export to different formats
workbook.SaveAs("output.xlsx"); // Modern Excel (Office 2007+)
workbook.SaveAs("output.xls"); // Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv"); // CSV for data import/export
workbook.SaveAsJson("output.json"); // JSON for web APIs
using IronXL;
WorkBook workbook = WorkBook.Load("BudgetCalculations.xlsx");
// Export to different formats
workbook.SaveAs("output.xlsx"); // Modern Excel (Office 2007+)
workbook.SaveAs("output.xls"); // Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv"); // CSV for data import/export
workbook.SaveAsJson("output.json"); // JSON for web APIs
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("BudgetCalculations.xlsx")
' Export to different formats
workbook.SaveAs("output.xlsx") ' Modern Excel (Office 2007+)
workbook.SaveAs("output.xls") ' Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv") ' CSV for data import/export
workbook.SaveAsJson("output.json") ' JSON for web APIs
Każdy format służy do konkretnych zastosowań. Format XLSX najlepiej sprawdza się w zachowaniu formatowania i formuł podczas udostępniania plików użytkownikom programu Excel. Format CSV zapewnia maksymalną kompatybilność przy importowaniu do baz danych, narzędzi analitycznych lub innych aplikacji do obsługi arkuszy kalkulacyjnych. JSON w naturalny sposób integruje się z frontendami JavaScript i interfejsami API REST.
Wynik


Obsługa plików Excel w ASP.NET Core
W przypadku aplikacji internetowych .NET Core udostępnianie plików Excel jako odpowiedzi do pobrania wymaga zaledwie kilku wierszy kodu:
[HttpGet("download-report")]
public IActionResult DownloadReport()
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet["A1"].Value = "Generated Report";
sheet["A2"].Value = DateTime.Niew;
var stream = workbook.ToStream();
return File(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report.xlsx"
);
}
[HttpGet("download-report")]
public IActionResult DownloadReport()
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet["A1"].Value = "Generated Report";
sheet["A2"].Value = DateTime.Niew;
var stream = workbook.ToStream();
return File(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report.xlsx"
);
}
Imports Microsoft.AspNetCore.Mvc
<HttpGet("download-report")>
Public Function DownloadReport() As IActionResult
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Report")
sheet("A1").Value = "Generated Report"
sheet("A2").Value = DateTime.Now
Dim stream = workbook.ToStream()
Return File(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report.xlsx"
)
End Function
Metoda ToStream() tworzy MemoryStream zawierający kompletny plik Excel, który metoda File() w .NET Core zwraca z odpowiednim typem MIME. Ten wzorzec działa identycznie dla kontrolerów MVC, kontrolerów API i minimalnych interfejsów API. Przeglądarka automatycznie uruchamia pobieranie pliku o określonej nazwie, umożliwiając użytkownikom zapisanie wygenerowanego pliku Excel lokalnie.
W przypadku aplikacji o dużym natężeniu ruchu warto rozważyć generowanie raportów w trybie asynchronicznym i buforowanie wyników, gdy dane bazowe nie zmieniają się często — takie podejście znacznie poprawia wydajność. Dokumentacja dotycząca konwersji formatów obejmuje dodatkowe scenariusze eksportu, w tym pliki chronione hasłem.
Jak biblioteka IronXL wypada na tle innych bibliotek .NET do obsługi Excela?
Istnieje kilka bibliotek do manipulacji plikami Excel w środowisku .NET, z których każda ma inne zalety. Poniższa tabela przedstawia porównanie tych narzędzi pod kątem kryteriów, które mają największe znaczenie dla aplikacji produkcyjnych:
| Funkcja | IronXL | Alternatywy open source |
|---|---|---|
| Wymagana instalacja pakietu Microsoft Office | Nie | Nie |
| Pomoc techniczna | Tak (zespół inżynierów dostępny 24 godziny na dobę, 5 dni w tygodniu) | Oparte na społeczności |
| Wielopłatformowe (.NET Core) | Pełne wsparcie | Różni się w zależności od biblioteki |
| Silnik obliczeniowy formuł | Ponad 150 funkcji | Ograniczone lub brak |
| Model licencji | Wersja komercyjna z bezpłatną wersją próbną | Różne rozwiązania open source |
IronXL doskonale sprawdza się w scenariuszach Enterprise wymagających niezawodnego wsparcia technicznego, dokumentacji i regularnych aktualizacji. Biblioteka sprawnie radzi sobie z trudnymi przypadkami — uszkodzonymi plikami, złożonymi formułami i dużymi zbiorami danych — z którymi alternatywne rozwiązania open source mogą mieć problemy. Dla zespołów, które stawiają na szybkość rozwoju i niezawodność produkcji, wsparcie komercyjne IronXL zapewnia spokój ducha.
Zgodnie z dyskusjami na Stack Overflow programiści często wskazują prostotę API i jakość dokumentacji jako czynniki decydujące przy wyborze bibliotek Excel do swoich projektów .NET Core. Fundacja .NET podkreśla również, że wdrażanie wielopłatformowe jest priorytetem dla nowoczesnego programowania w .NET, co sprawia, że biblioteki niezależne od Office'a są niezbędne dla rozwiązań łatwych w utrzymaniu.
Dla zespołów dbających o bezpieczeństwo: IronXL działa niezależnie od pakietu Microsoft Office i unika korzystania z interfejsu Office Interop, co minimalizuje ryzyko związane z zewnętrznymi lukami w zabezpieczeniach. Wbudowana obsługa szyfrowania i ochrony hasłem pozwala zabezpieczyć wygenerowane pliki Excel, gwarantując, że tylko upoważnieni użytkownicy mogą uzyskać dostęp do krytycznych arkuszy i danych lub je edytować. Zapoznaj się z opcjami licencyjnymi IronXL, aby znaleźć plan odpowiedni dla Twojego zespołu.
Jak radzisz sobie z wydajnością na dużą skalę?
Gdy aplikacja generuje pliki Excel dla wielu użytkowników jednocześnie lub przetwarza duże zbiory danych, planowanie wydajności staje się kluczowe. IronXL sprawnie obsługuje duże skoroszyty, ponieważ działa całkowicie w pamięci, bez uruchamiania procesów pakietu Office ani obiektów COM. Taka architektura pozwala przewidywać obciążenie procesora i pamięci.
Kluczowe strategie działania
W przypadku raportów zawierających duże ilości danych należy wypełniać komórki zbiorczo, a nie pojedynczo. Zapisywanie do zakresu przy użyciu notacji nawiasowej sheet["A1:Z1000"] może być znacznie szybsze niż iterowanie po poszczególnych komórkach podczas ustawiania jednolitych wartości. W przypadku danych heterogenicznych należy używać pętli z interpolacją ciągów znaków do dynamicznego adresowania komórek.
W przypadku punktów końcowych .NET Core, które generują raporty na żądanie, warto rozważyć buforowanie wynikowych tablic bajtów lub MemoryStream danych wyjściowych przy użyciu IMemoryCache lub pamięci podręcznej rozproszonej, takiej jak Redis. Gdy dane bazowe nie zmieniają się między żądaniami, buforowane pliki Excel mogą być zwracane natychmiast, bez konieczności ponownego generowania. Strategia ta jest szczególnie skuteczna w przypadku eksportu danych z pulpitu nawigacyjnego i raportów planowanych.
Generowanie wielowątkowe jest bezpieczne w IronXL, gdy każdy wątek działa na własnej instancji WorkBook. Należy unikać współdzielenia instancji skoroszytów lub arkuszy między wątkami bez synchronizacji. W przypadku przetwarzania zadań w tle biblioteki takie jak Hangfire lub Quartz.NET współpracują z biblioteką IronXL for .NET w celu generowania raportów zgodnie z harmonogramem, umożliwiając wstępne generowanie plików poza godzinami szczytu.
W przypadku największych zbiorów danych warto rozważyć podzielenie danych na wiele arkuszy zamiast tworzenia pojedynczych arkuszy zawierających dziesiątki tysięcy wierszy. Dokumentacja dotycząca eksportu DataTable przedstawia skuteczne wzorce masowego przesyłania danych ze źródeł ADO.NET. Dodatkowe przykłady kodu obejmujące zaawansowane scenariusze, takie jak odczytywanie istniejących plików Excel lub praca z skoroszytami chronionymi hasłem, są dostępne w pełnej Dokumentacji API.
Jakie są Twoje kolejne kroki?
Tworzenie arkuszy kalkulacyjnych Excel w .NET Core za pomocą IronXL zmienia zadanie, które kiedyś było obciążone wieloma zależnościami, w prostą operację .NET. Od podstawowej manipulacji komórkami po obliczenia formuł i profesjonalne formatowanie — biblioteka zapewnia kompletny zestaw narzędzi do automatyzacji arkuszy kalkulacyjnych, który działa wszędzie tam, gdzie działa .NET 10 — na serwerach Windows, w kontenerach Linux lub na platformach chmurowych.
Architektura wielopłatformowa zapewnia identyczne działanie na komputerach programistycznych i w środowiskach produkcyjnych, eliminując problemy typu "działa na moim komputerze", które są powszechne w rozwiązaniach Office Interop. Zacznij od polecenia instalacyjnego NuGet, utwórz swój pierwszy skoroszyt i kontynuuj pracę, korzystając z wzorców przedstawionych w niniejszym przewodniku.
Pobierz bezpłatny 30-dniowy okres próbny, aby bez ograniczeń zapoznać się ze wszystkimi funkcjami, lub sprawdź opcje licencji do wdrożenia produkcyjnego. Przejrzyj przykłady kodu IronXL, aby zobaczyć dodatkowe scenariusze w praktyce, i zapoznaj się z centrum dokumentacji IronXL, gdzie znajdziesz kompletną Dokumentację API oraz zaawansowane przewodniki konfiguracyjne.
Często Zadawane Pytania
Jakie są zalety korzystania z IronXL do generowania arkuszy kalkulacyjnych Excel w .NET Core?
IronXL pozwala programistom tworzyć pliki Excel programowo bez konieczności korzystania z pakietu Microsoft Office lub Office Interop, oferując kompatybilność międzyplatformową w systemach Windows, Linux i macOS. Dzięki temu idealnie nadaje się do nowoczesnych aplikacji opartych na danych.
Czy IronXL może być używany w aplikacjach ASP.NET Core?
Tak, IronXL można zintegrować z aplikacjami .NET Core, co daje potężne możliwości automatyzacji, takie jak raportowanie finansowe, śledzenie zapasów i eksport danych.
Czy za pomocą IronXL można generować arkusze kalkulacyjne Excel w aplikacjach internetowych?
Tak. IronXL obsługuje generowanie arkuszy Excel i funkcję pobierania w aplikacjach internetowych, poprawiając komfort użytkowania poprzez umożliwienie użytkownikom eksportowania złożonych tabel danych i pracy z nimi.
Czy IronXL wymaga zainstalowania pakietu Microsoft Office?
Nie, IronXL nie wymaga zainstalowania pakietu Microsoft Office. Działa niezależnie od Office Interop, co upraszcza wdrażanie i integrację.
W jaki sposób IronXL poprawia dostępność danych w aplikacjach .NET Core?
IronXL zwiększa dostępność danych, umożliwiając programistom programowe generowanie arkuszy kalkulacyjnych Excel, co ułatwia użytkownikom interakcję ze złożonymi zbiorami danych i wyciąganie z nich wniosków.
Czy IronXL można wdrożyć w środowiskach chmurowych, takich jak Azure?
Tak, IronXL można wdrożyć w środowiskach chmurowych, takich jak Azure i kontenery Docker, dzięki czemu nadaje się do skalowalnych aplikacji opartych na chmurze.
Czy IronXL jest kompatybilny z systemami macOS i Linux?
IronXL jest w pełni kompatybilny z systemami macOS i Linux, zapewniając wieloplatformowe rozwiązanie do generowania arkuszy kalkulacyjnych Excel w aplikacjach .NET.
Jakie rodzaje aplikacji mogą skorzystać z IronXL?
Aplikacje wymagające rozwiązań opartych na danych, takie jak raportowanie finansowe, zarządzanie zapasami i zautomatyzowane pulpity nawigacyjne, odnoszą ogromne korzyści z wykorzystania IronXl.Excel do generowania arkuszy kalkulacyjnych Excel.
W jaki sposób IronXL poprawia komfort użytkowania aplikacji internetowych?
IronXL poprawia komfort użytkowania, umożliwiając eksport złożonych tabel danych do arkuszy kalkulacyjnych Excel, dzięki czemu dane stają się bardziej dostępne i przenośne dla użytkowników końcowych.




