Jak otwierać pliki Excel w C# z IronXL
Otwieranie i praca z plikami Excel w języku C# to coś, z czym prędzej czy później spotyka się niemal każdy programista .NET. Niezależnie od tego, czy automatyzujesz cotygodniowe raporty, przetwarzasz import danych, czy tworzysz narzędzia generujące arkusze kalkulacyjne w locie, wybrana biblioteka może mieć znaczący wpływ na szybkość, niezawodność i elastyczność wdrożenia.
W tym samouczku omówiono, jak otwierać pliki Excel w języku C# przy użyciu biblioteki IronXL — lekkiej biblioteki Excel, która odczytuje, edytuje i zapisuje skoroszyty bez konieczności instalowania pakietu Microsoft Office. Zobaczysz, jak łatwo jest ładować dane, uzyskiwać dostęp do arkuszy i pracować z komórkami programowo, a wszystko to w ramach aplikacji C#.
Dłączego warto wybrać IronXL zamiast Microsoft.Office.Interop.Excel?
Chociaż Microsoft.Office.Interop.Excel był tradycyjnym podejściem do automatyzacji programu Excel, ma on znaczne ograniczenia, które sprawiają, że IronXL jest lepszym wyborem dla nowoczesnych aplikacji. Sama firma Microsoft odradza stosowanie Office Interop na serwerach, powołując się na niestabilność, problemy ze skalowalnością oraz nieobsługiwane scenariusze wdrożeniowe.
| Funkcja | IronXL | Microsoft.Office.Interop.Excel |
|---|---|---|
| Wymagana instalacja programu Excel | Nie | Tak |
| Obsługa wielu platform | Windows, Linux, macOS | Tylko dla systemu Windows |
| Wdrożenie na serwerze | W pełni obsługiwane | Niezalecane przez firmę Microsoft |
| Zarządzanie pamięcią | Automatyczne | Wymagane ręczne czyszczenie COM |
| Złożoność API | Proste i intuicyjne | Złożone interfejsy COM |
| Obsługiwane formaty plików | XLS, XLSX, CSV, TSV, JSON | Ograniczone do formatów Excel |
| Bezpieczeństwo wątków | Obsługiwane | Tylko jednowątkowe |
IronXL eliminuje zależność od programu Microsoft Excel, dzięki czemu idealnie nadaje się do środowisk serwerowych, kontenerów Docker oraz platform chmurowych, takich jak Azure. Biblioteka zapewnia przejrzysty, nowoczesny interfejs API, który eliminuje konieczność pracy z obiektami COM lub ręcznego zarządzania pamięcią. Oprócz otwierania plików, IronXL obsługuje wszystko, od obliczania formuł, przez generowanie wykresów, aż po stylizację komórek.
Jak zainstalować IronXL w projekcie .NET?
Rozpoczęcie pracy z IronXL jest proste — można go dodać do projektu w ciągu kilku minut za pomocą menedżera pakietów NuGet. Otwórz konsolę menedżera pakietów w Visual Studio i uruchom:
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
Oba polecenia instalują ten sam pakiet. Pierwszego należy używać w konsoli menedżera pakietów Visual Studio, a drugiego z interfejsem CLI .NET. Po instalacji można sprawdzić, czy odwołanie do pakietu pojawia się w pliku projektu pod <PackageReference Include="IronXl.Excel" />.
!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101000101111101010011010101000100000101010010010101000100010101000100010111110101011101001001010100010010000101111101010000010100100100111101000100010101010100001101010100010111110101010001010010010010010100000101001100010111110100001001001100010011110100001101001011--}
Jakie wersje .NET obsługuje IronXL?
IronXL obsługuje pełne spektrum nowoczesnych wersji .NET, w tym .NET 10, .NET 8, .NET 6, .NET Framework 4.6.2 i nowsze oraz .NET Standard 2.0. Tak szeroki zakres wsparcia oznacza, że można używać IronXL zarówno w nowych projektach opartych na .NET 10, jak i w starszych aplikacjach działających na tradycyjnym .NET Framework.
Biblioteka jest dostępna jako pojedynczy pakiet NuGet, który automatycznie wybiera odpowiedni plik binarny dla docelowego środowiska. Nie są wymagańe żadne dodatkowe zależności, instalacje specyficzne dla platformy ani licencja Excel. Pełną listę obsługiwanych środowisk uruchomieniowych i platform można znaleźć w przewodniku zgodności IronXL.
Jak otworzyć i odczytać istniejący plik Excel w języku C#?
Otwarcie istniejących plików Excel za pomocą IronXL wymaga zaledwie kilku wierszy kodu. Biblioteka obsługuje odczyt plików XLS i XLSX, a także formatów CSV i TSV, poprzez ujednolicony interfejs API. Poniższy przykład ilustruje podstawowy przebieg pracy:
// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");
// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];
// Or access a worksheet by name
WorkSheet namedSheet = workbook.GetWorkSheet("January Sales");
// Read a specific cell value
string cellValue = sheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a numeric value
decimal revenue = sheet["B2"].DecimalValue;
Console.WriteLine($"Revenue: {revenue:C}");
// Check cell data type before reading
var cell = sheet["C3"];
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}");
// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");
// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];
// Or access a worksheet by name
WorkSheet namedSheet = workbook.GetWorkSheet("January Sales");
// Read a specific cell value
string cellValue = sheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a numeric value
decimal revenue = sheet["B2"].DecimalValue;
Console.WriteLine($"Revenue: {revenue:C}");
// Check cell data type before reading
var cell = sheet["C3"];
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}");
' Load an existing Excel file
Dim workbook As WorkBook = WorkBook.Load("sales-data.xlsx")
' Access the first worksheet by index
Dim sheet As WorkSheet = workbook.WorkSheets(0)
' Or access a worksheet by name
Dim namedSheet As WorkSheet = workbook.GetWorkSheet("January Sales")
' Read a specific cell value
Dim cellValue As String = sheet("A1").StringValue
Console.WriteLine($"Cell A1 contains: {cellValue}")
' Read a numeric value
Dim revenue As Decimal = sheet("B2").DecimalValue
Console.WriteLine($"Revenue: {revenue:C}")
' Check cell data type before reading
Dim cell = sheet("C3")
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}")
Metoda WorkBook.Load() automatycznie wykrywa format pliku — XLS, XLSX, CSV lub TSV — i obsługuje parsowanie bez dodatkowej konfiguracji. Dostęp do arkuszy można uzyskać albo poprzez indeks, używając workbook.WorkSheets[0], albo poprzez nazwę, używając GetWorkSheet(). Wartości poszczególnych komórek są czytelne dzięki notacji nawiasowej (sheet["A1"]), co sprawia, że kod jest zwięzły i wyrazisty. Pełna lista obsługiwanych typów plików znajduje się w dokumentacji Open XML SDK dotyczącej SpreadsheetML oraz na stronie pakietu IronXL NuGet.
W celu zapewnienia dostępu typowanego IronXL udostępnia właściwości takie jak .StringValue, .DecimalValue, .IntValue, .BoolValue oraz .DateTimeValue bezpośrednio w komórkach. Eliminuje to konieczność zgadywania typu, co jest powszechne w przypadku ogólnych interfejsów API opartych na obiektach. W przypadku bardziej złożonych scenariuszy zapoznaj się z przewodnikiem dotyczącym pracy z zakresami w programie Excel oraz dokumentacją dotyczącą formatów danych komórek.
Wynik

Jak wczytać pliki Excel ze strumienia lub tablicy bajtów?
W aplikacjach internetowych i funkcjach chmurowych często otrzymujesz dane plików jako strumień lub tablicę bajtów, a nie ścieżkę do pliku. IronXL obsługuje oba przypadki:
// Load from a byte array (e.g., from a database or HTTP response)
byte[] fileBytes = File.ReadAllBytes("sales-data.xlsx");
WorkBook workbookFromBytes = WorkBook.Load(fileBytes);
// Load from a MemoryStream
using var memStream = new MemoryStream(fileBytes);
WorkBook workbookFromStream = WorkBook.Load(memStream);
// Access data the same way regardless of source
WorkSheet sheet = workbookFromStream.DefaultWorkSheet;
Console.WriteLine(sheet["A1"].StringValue);
// Load from a byte array (e.g., from a database or HTTP response)
byte[] fileBytes = File.ReadAllBytes("sales-data.xlsx");
WorkBook workbookFromBytes = WorkBook.Load(fileBytes);
// Load from a MemoryStream
using var memStream = new MemoryStream(fileBytes);
WorkBook workbookFromStream = WorkBook.Load(memStream);
// Access data the same way regardless of source
WorkSheet sheet = workbookFromStream.DefaultWorkSheet;
Console.WriteLine(sheet["A1"].StringValue);
Imports System
Imports System.IO
' Load from a byte array (e.g., from a database or HTTP response)
Dim fileBytes As Byte() = File.ReadAllBytes("sales-data.xlsx")
Dim workbookFromBytes As WorkBook = WorkBook.Load(fileBytes)
' Load from a MemoryStream
Using memStream As New MemoryStream(fileBytes)
Dim workbookFromStream As WorkBook = WorkBook.Load(memStream)
' Access data the same way regardless of source
Dim sheet As WorkSheet = workbookFromStream.DefaultWorkSheet
Console.WriteLine(sheet("A1").StringValue)
End Using
Ładowanie oparte na strumieniach jest szczególnie przydatne w kontrolerach ASP.NET Core, gdzie odbierasz plik IFormFile. Wystarczy wywołać formFile.OpenReadStream() i przekazać wynik do WorkBook.Load(). Aby zapoznać się z kompletnymi wzorcami integracji ASP.NET Core, zobacz samouczek ASP.NET Core Excel.
Jak tworzyć nowe skoroszyty Excel w języku C#?
Tworzenie nowych plików Excel jest równie proste dzięki funkcjom tworzenia arkuszy kalkulacyjnych w IronXL. Poniższy przykład przedstawia tworzenie sformatowanego raportu kwartalnego:
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Title = "Q1 Revenue Report";
// Create a named worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");
// Add header row
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units Sold";
sheet["C1"].Value = "Revenue";
// Add data rows
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 120;
sheet["C2"].Value = 45000;
sheet["A3"].Value = "Support Contracts";
sheet["B3"].Value = 55;
sheet["C3"].Value = 27500;
// Add a SUM formula
sheet["C4"].Formula = "=SUM(C2:C3)";
// Apply number formatting
sheet["C2:C4"].FormatString = "$#,##0.00";
// Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx");
Console.WriteLine("Workbook saved successfully.");
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Title = "Q1 Revenue Report";
// Create a named worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");
// Add header row
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units Sold";
sheet["C1"].Value = "Revenue";
// Add data rows
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 120;
sheet["C2"].Value = 45000;
sheet["A3"].Value = "Support Contracts";
sheet["B3"].Value = 55;
sheet["C3"].Value = 27500;
// Add a SUM formula
sheet["C4"].Formula = "=SUM(C2:C3)";
// Apply number formatting
sheet["C2:C4"].FormatString = "$#,##0.00";
// Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx");
Console.WriteLine("Workbook saved successfully.");
' Create a new workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add metadata
workbook.Metadata.Author = "Sales Department"
workbook.Metadata.Title = "Q1 Revenue Report"
' Create a named worksheet
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Q1 Report")
' Add header row
sheet("A1").Value = "Product"
sheet("B1").Value = "Units Sold"
sheet("C1").Value = "Revenue"
' Add data rows
sheet("A2").Value = "Software Licenses"
sheet("B2").Value = 120
sheet("C2").Value = 45000
sheet("A3").Value = "Support Contracts"
sheet("B3").Value = 55
sheet("C3").Value = 27500
' Add a SUM formula
sheet("C4").Formula = "=SUM(C2:C3)"
' Apply number formatting
sheet("C2:C4").FormatString = "$#,##0.00"
' Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx")
Console.WriteLine("Workbook saved successfully.")
Metoda WorkBook.Create() inicjuje nowy skoroszyt w określonym formacie. Można dodawać wiele arkuszy za pomocą CreateWorkSheet(), wypełniać komórki różnymi typami danych, w tym ciągami znaków, liczbami, wartościami logicznymi i datami, oraz stosować formuły programu Excel bezpośrednio poprzez właściwość Formula. Biblioteka automatycznie obsługuje konwersję typów danych oraz wymagania dotyczące formatowania specyficzne dla programu Excel.
Aby stylizować nagłówki i dodawać obramowania, użyj API stylizacji komórek. W przypadku generowania raportów na podstawie szablonów zapoznaj się z przewodnikiem dotyczącym eksportu z istniejących szablonów Excel.
Wynik

Jak odczytywać i przetwarzać dane z arkuszy kalkulacyjnych Excel w trybie zbiorczym?
IronXL efektywnie obsługuje ekstrakcję danych i przetwarzanie zbiorcze dzięki operacjom opartym na zakresach oraz konwersji DataTable:
// Load a workbook and select the default sheet
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a rectangular range of cells
var range = sheet["A1:D10"];
foreach (var cell in range)
{
Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Convert the worksheet to a DataTable for database integration
System.Data.DataTable dataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders: true);
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}");
// Use aggregate functions directly on a range
decimal total = sheet["C2:C10"].Sum();
decimal average = sheet["C2:C10"].Avg();
decimal maxValue = sheet["C2:C10"].Max();
Console.WriteLine($"Total: {total:C}");
Console.WriteLine($"Average: {average:C}");
Console.WriteLine($"Max: {maxValue:C}");
// Filter and find rows using LINQ on the DataTable
var highValue = dataTable.AsEnumerable()
.Where(row => row.Field<decimal>("Revenue") > 10000)
.ToList();
Console.WriteLine($"High-value rows: {highValue.Count}");
// Load a workbook and select the default sheet
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a rectangular range of cells
var range = sheet["A1:D10"];
foreach (var cell in range)
{
Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Convert the worksheet to a DataTable for database integration
System.Data.DataTable dataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders: true);
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}");
// Use aggregate functions directly on a range
decimal total = sheet["C2:C10"].Sum();
decimal average = sheet["C2:C10"].Avg();
decimal maxValue = sheet["C2:C10"].Max();
Console.WriteLine($"Total: {total:C}");
Console.WriteLine($"Average: {average:C}");
Console.WriteLine($"Max: {maxValue:C}");
// Filter and find rows using LINQ on the DataTable
var highValue = dataTable.AsEnumerable()
.Where(row => row.Field<decimal>("Revenue") > 10000)
.ToList();
Console.WriteLine($"High-value rows: {highValue.Count}");
Imports System
Imports System.Data
Imports System.Linq
' Load a workbook and select the default sheet
Dim workbook As WorkBook = WorkBook.Load("inventory.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Read a rectangular range of cells
Dim range = sheet("A1:D10")
For Each cell In range
Console.WriteLine($"{cell.AddressString}: {cell.Text}")
Next
' Convert the worksheet to a DataTable for database integration
Dim dataTable As DataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders:=True)
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}")
' Use aggregate functions directly on a range
Dim total As Decimal = sheet("C2:C10").Sum()
Dim average As Decimal = sheet("C2:C10").Avg()
Dim maxValue As Decimal = sheet("C2:C10").Max()
Console.WriteLine($"Total: {total:C}")
Console.WriteLine($"Average: {average:C}")
Console.WriteLine($"Max: {maxValue:C}")
' Filter and find rows using LINQ on the DataTable
Dim highValue = dataTable.AsEnumerable() _
.Where(Function(row) row.Field(Of Decimal)("Revenue") > 10000) _
.ToList()
Console.WriteLine($"High-value rows: {highValue.Count}")
Składnia wyboru zakresu (sheet["A1:D10"]) zapewnia elegancki sposób pracy z wieloma komórkami jednocześnie. Metoda ToDataTable() konwertuje dane z arkusza na System.Data.DataTable, który integruje się bezpośrednio z Entity Framework, kontrolkami powiązania danych oraz operacjami zbiorczego kopiowania SQL. IronXL obsługuje również funkcje agregujące — Sum(), Avg(), Max() i Min() — bezpośrednio na zakresach, eliminując potrzebę pisania ręcznego kodu iteracyjnego.
Aby efektywnie obsługiwać bardzo duże zbiory danych, zapoznaj się z pełną dokumentacją API IronXL, zawierającą wzorce przetwarzania strumieniowego i fragmentarycznego.

Jak filtrować i wyszukiwać komórki w arkuszu?
Oprócz dostępu opartego na zakresach, IronXL pozwala wyszukiwać komórki według wartości, stosować logikę warunkówą oraz iterować wiersze i kolumny programowo:
WorkBook workbook = WorkBook.Load("products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Get total row and column counts
int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;
Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns");
// Iterate over all rows and columns
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
var cell = sheet.GetCellAt(row, col);
if (cell != null && !string.IsNullOrEmpty(cell.Text))
{
Console.WriteLine($"[{row},{col}] = {cell.Text}");
}
}
}
// Find the first cell containing specific text
var searchResult = sheet["A1:Z100"]
.FirstOrDefault(c => c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase));
if (searchResult != null)
{
Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}");
}
WorkBook workbook = WorkBook.Load("products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Get total row and column counts
int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;
Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns");
// Iterate over all rows and columns
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
var cell = sheet.GetCellAt(row, col);
if (cell != null && !string.IsNullOrEmpty(cell.Text))
{
Console.WriteLine($"[{row},{col}] = {cell.Text}");
}
}
}
// Find the first cell containing specific text
var searchResult = sheet["A1:Z100"]
.FirstOrDefault(c => c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase));
if (searchResult != null)
{
Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}");
}
Imports System
Imports System.Linq
Dim workbook As WorkBook = WorkBook.Load("products.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Get total row and column counts
Dim rowCount As Integer = sheet.RowCount
Dim colCount As Integer = sheet.ColumnCount
Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns")
' Iterate over all rows and columns
For row As Integer = 1 To rowCount
For col As Integer = 1 To colCount
Dim cell = sheet.GetCellAt(row, col)
If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(cell.Text) Then
Console.WriteLine($"[{row},{col}] = {cell.Text}")
End If
Next
Next
' Find the first cell containing specific text
Dim searchResult = sheet("A1:Z100") _
.FirstOrDefault(Function(c) c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase))
If searchResult IsNot Nothing Then
Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}")
End If
Ten schemat jest powszechny w procesach walidacji danych, gdzie przed dalszym przetwarzaniem pliku należy przeskanować go w poszukiwaniu określonych wartości. W przypadku zaawansowanych zastosowań filtrowania zapoznaj się z dokumentacją dotyczącą zaznaczania zakresów w programie Excel.
Jakie scenariusze wdrożenia obsługuje to podejście?
Jedną z najbardziej praktycznych zalet korzystania z IronXL jest możliwość działania bez konieczności instalowania pakietu Microsoft Office w systemie. Zapewnia to elastyczność wdrożenia, której rozwiązania oparte na Interop po prostu nie są w stanie dorównać:
Wdrażanie w chmurze i kontenerach
IronXL działa na platformach Azure App Service, AWS Lambda i Google Cloud Run bez konieczności specjalnej konfiguracji. Ponieważ nie ma on żadnych zależności od pakietu Office, unikasz zarówno kosztów licencji, jak i złożoności związanej z dołączaniem pakietu Office do obrazu kontenera. Minimalny plik Dockerfile dla aplikacji .NET 10 korzystającej z IronXL wymaga jedynie standardowego obrazu środowiska uruchomieniowego .NET.
Wdrożenie oparte na Dockerze jest równie proste. Przewodnik IronXL Docker obejmuje konfiguracje kontenerów w systemach Debian, Alpine i Windows. We wszystkich przypadkach IronXL instaluje się za pośrednictwem NuGet i działa bez dodatkowych pakietów systemówych.
Wykorzystanie serwera i potoku CI/CD
Środowiska serwerowe często nie posiadają graficznego interfejsu użytkownika (GUI) i nie mogą uruchamiać aplikacji zależnych od sesji pulpitu Windows. IronXL działa całkowicie w trybie bezinterfejsowym, dzięki czemu nadaje się do:
- Generowanie raportów Excel w zaplanowanych zadaniach w tle
- Przetwarzanie przesłanych arkuszy kalkulacyjnych w interfejsach API .NET Core
- Eksportowanie wyników zapytań DataTable lub baz danych do formatu XLSX w zautomatyzowanych potokach
- Sprawdzanie poprawności importowanych plików danych podczas testów CI/CD
W przypadku ASP.NET Core zapoznaj się z samouczkiem dotyczącym eksportu do programu Excel w ASP.NET Core, który obejmuje strumieniowanie plików, nagłówki odpowiedzi oraz prawidłowe wzorce usuwania.
Programowanie wielopłatformowe
IronXL jest przeznaczony dla .NET Standard 2.0 i działa natywnie w systemach Linux i macOS, umożliwiając tworzenie oprogramowania na wielu platformach. Programiści korzystający z systemu macOS mogą pisać i testować kod generujący pliki Excel lokalnie, mając pełną pewność, że ten sam plik binarny będzie działał identycznie na produkcyjnym serwerze z systemem Linux. Nie są wymagańe żadne interfejsy API specyficzne dla platformy ani bloki kompilacji warunkówej.
Aby uzyskać więcej informacji na temat obsługiwanych środowisk, zapoznaj się z przeglądem wprowadzającym do IronXL.
Jak radzisz sobie z typowymi operacjami w Excelu wykraczającymi poza podstawowe odczytywanie danych?
Odczytywanie i zapisywanie komórek to tylko podstawa. W praktyce automatyzacja programu Excel zazwyczaj obejmuje formatowanie, formuły, zarządzanie arkuszami oraz konwersję formatów.
Formatowanie komórek i stosowanie stylów
IronXL udostępnia kompletny interfejs API stylu obejmujący czcionki, kolory, obramowania, wyrównanie i formaty liczb:
WorkBook workbook = WorkBook.Load("report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Apply bold, font size, and background color to header row
var headerRange = sheet["A1:F1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.HorizontalAlignment = IronXl.Styles.HorizontalAlignment.Center;
// Format a currency column
sheet["D2:D100"].FormatString = "$#,##0.00";
// Apply a date format
sheet["E2:E100"].FormatString = "yyyy-MM-dd";
// Add borders to a data range
var dataRange = sheet["A1:F20"];
dataRange.Style.Border.Bottom.Type = IronXl.Styles.BorderType.Thin;
dataRange.Style.Border.Right.Type = IronXl.Styles.BorderType.Thin;
workbook.SaveAs("formatted-report.xlsx");
WorkBook workbook = WorkBook.Load("report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Apply bold, font size, and background color to header row
var headerRange = sheet["A1:F1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.HorizontalAlignment = IronXl.Styles.HorizontalAlignment.Center;
// Format a currency column
sheet["D2:D100"].FormatString = "$#,##0.00";
// Apply a date format
sheet["E2:E100"].FormatString = "yyyy-MM-dd";
// Add borders to a data range
var dataRange = sheet["A1:F20"];
dataRange.Style.Border.Bottom.Type = IronXl.Styles.BorderType.Thin;
dataRange.Style.Border.Right.Type = IronXl.Styles.BorderType.Thin;
workbook.SaveAs("formatted-report.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("report.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Apply bold, font size, and background color to header row
Dim headerRange = sheet("A1:F1")
headerRange.Style.Font.Bold = True
headerRange.Style.Font.Height = 12
headerRange.Style.SetBackgroundColor("#4472C4")
headerRange.Style.Font.Color = "#FFFFFF"
headerRange.Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center
' Format a currency column
sheet("D2:D100").FormatString = "$#,##0.00"
' Apply a date format
sheet("E2:E100").FormatString = "yyyy-MM-dd"
' Add borders to a data range
Dim dataRange = sheet("A1:F20")
dataRange.Style.Border.Bottom.Type = IronXL.Styles.BorderType.Thin
dataRange.Style.Border.Right.Type = IronXL.Styles.BorderType.Thin
workbook.SaveAs("formatted-report.xlsx")
Aby uzyskać pełny przewodnik po opcjach stylizacji, zobacz, jak stylizować komórki, obramowania i czcionki.
Konwersja między formatami Excel i CSV
IronXL obsługuje konwersję formatów bezpośrednio, umożliwiając wczytanie pliku CSV i zapisanie go jako XLSX lub eksportowanie pliku XLSX do formatu CSV w celu dalszego przetwarzania:
// Load a CSV file and save as XLSX
WorkBook csvBook = WorkBook.Load("data-import.csv");
csvBook.SaveAs("data-import.xlsx");
// Load an XLSX file and export as CSV
WorkBook xlsxBook = WorkBook.Load("report.xlsx");
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv");
// Load a CSV file and save as XLSX
WorkBook csvBook = WorkBook.Load("data-import.csv");
csvBook.SaveAs("data-import.xlsx");
// Load an XLSX file and export as CSV
WorkBook xlsxBook = WorkBook.Load("report.xlsx");
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv");
' Load a CSV file and save as XLSX
Dim csvBook As WorkBook = WorkBook.Load("data-import.csv")
csvBook.SaveAs("data-import.xlsx")
' Load an XLSX file and export as CSV
Dim xlsxBook As WorkBook = WorkBook.Load("report.xlsx")
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv")
Aby uzyskać więcej informacji na temat obsługi plików CSV, w tym konfiguracji separatorów i opcji kodowania, zapoznaj się z samouczkiem dotyczącym czytnika CSV w języku C# oraz przewodnikiem po konwersji plików CSV do formatu XLSX.
Jak rozpocząć korzystanie z bezpłatnej wersji próbnej?
IronXL jest dostępny do pobrania z bezpłatną licencją deweloperską, która pozwala przetestować pełen zestaw funkcji przed podjęciem decyzji o zakupie. W trakcie okresu próbnego nie ma żadnych ograniczeń dotyczących funkcji — testujesz tę samą bibliotekę, która działa w środowisku produkcyjnym.
Aby rozpocząć:
- Zainstaluj pakiet za pomocą NuGet:
dotnet add package IronXLdotnet add package IronXLSHELL - Odwiedź stronę licencyjną IronXL, aby uzyskać bezpłatny klucz próbny.
- Zastosuj klucz w kodzie przed każdym wywołaniem IronXL:
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";Imports IronXl IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"$vbLabelText $csharpLabel
Licencje są dostępne dla indywidualnych programistów, zespołów i organizacji. Strona produktu IronXL zawiera pełne informacje o cenach i opcjach wdrożenia, w tym prawa do dystrybucji bez opłat licencyjnych. Aby uzyskać szerszy przegląd wszystkich produktów Iron Software i sposobu ich integracji, zapoznaj się z pakietem produktów Iron Software.
Często Zadawane Pytania
Jak otworzyć pliki Excel w języku C# bez pakietu Microsoft Office?
Za pomocą IronXL można otwierać pliki Excel w języku C# bez konieczności korzystania z pakietu Microsoft Office. IronXL stanowi nowoczesną alternatywę dla Interop, oferując lepszą wydajność i brak zależności od programu Excel.
Jakie są zalety korzystania z IronXL do obsługi plików Excel w języku C#?
IronXL oferuje szereg korzyści, w tym zwiększoną wydajność, brak zależności od instalacji programu Excel oraz większą elastyczność wdrożenia. Pozwala programistom na automatyzację raportów, odczytywanie importowanych danych oraz wydajne generowanie arkuszy kalkulacyjnych.
Czy IronXL obsługuje pliki Excel do zadań automatyzacji?
Tak, IronXL doskonale nadaje się do zadań automatyzacji, takich jak generowanie cotygodniowych raportów, odczytywanie importowanych danych oraz tworzenie narzędzi do dynamicznego generowania arkuszy kalkulacyjnych.
Czy IronXL jest odpowiednim zamiennikiem dla Interop w aplikacjach C#?
IronXL jest odpowiednim zamiennikiem dla Interop, oferującym nowoczesne rozwiązanie, które eliminuje zależność od Excela i poprawia wydajność aplikacji podczas pracy z plikami Excel.
Czy IronXL obsługuje odczyt i zapis plików Excel?
IronXL w pełni obsługuje zarówno odczyt, jak i zapis plików Excel, co czyni go wszechstronnym narzędziem dla programistów .NET zajmujących się danymi z arkuszy kalkulacyjnych.




