Jak otworzyć pliki Excel w C#
IronXL umożliwia programistom C# otwieranie, odczytywanie i manipulowanie plikami Excel bez konieczności instalacji Microsoft Office. Wystarczy załadować skoroszyty za pomocą WorkBook.Load(), uzyskać dostęp do arkuszy i odczytać wartości komórek przy użyciu intuicyjnej składni, jak sheet["A1"].
Ten samouczek bada użycie IronXL do otwierania i odczytywania plików Excel w projektach C#, dostarczając początkującym programistom kompleksowych przykładów i najlepszych praktyk dotyczących pracy z danymi Excel.
Czym jest biblioteka IronXL Excel?
IronXL to biblioteka .NET, która kładzie nacisk na łatwość użycia, dokładność i szybkość. Pomaga otwierać, odczytywać, tworzyć i edytować pliki Excel efektywnie, bez konieczności użycia MS Office Interop, co czyni ją praktycznym wyborem dla programistów chcących pracować z Excelem w C# bez Interop.
IronXL is compatible with all .NET Frameworks along with Linux, macOS, Docker, Azure, and AWS. Możesz go używać do tworzenia aplikacji konsolowych, webowych i desktopowych takich jak Blazor i .NET MAUI do nowoczesnych aplikacji webowych. Obsługuje różne formaty skoroszytów, jak pliki XLS i XLSX, XSLT i XLSM, CSV oraz TSV.
Jakie są kluczowe cechy IronXL?
- Otwieraj, odczytuj i wyszukuj dane w formatach XLS/XLSX/CSV/TSV, używając LoadSpreadsheets.
- Eksportuj arkusze Excel do wielu formatów za pomocą Zapisz i Eksportuj.
- Szyfruj i odszyfruj pliki hasłami, używając zabezpieczających funkcji.
- Pracuj z arkuszami Excel jako obiekty
DataSetiDataTablepoprzez integrację DataSet. - Formuły Excel przeliczają się automatycznie, wspierając funkcje matematyczne.
- Edytuj dane w arkuszach przy użyciu intuicyjnej składni zakresu, jak
WorkSheet["A1:B10"]. - Sort Cell Ranges, Columns, and Rows.
- Style Cells with Font, Background, Border, Alignment, and Number formats.
Jak otworzyć plik Excel w C#?
Co jest potrzebne przed rozpoczęciem?
Aby używać IronXL w aplikacjach C#, zainstaluj następujące komponenty na lokalnym komputerze:
- Visual Studio - Oficjalne IDE do tworzenia aplikacji C# .NET. Program Visual Studio można pobrać i zainstalować ze strony internetowej firmy Microsoft. Możesz również użyć
JetBrainsReSharper& Rider. W celu dodatkowych wskazówek dotyczących konfiguracji, odwiedź Przegląd rozpoczęcia. - IronXL - Biblioteka Excel, która pomaga pracować z arkuszami Excel w C#. Przed użyciem należy zainstalować go w aplikacji C#. Możesz go pobrać ze strony NuGet lub z zarządzania pakietami NuGet w Visual Studio. Możesz również pobrać plik .NET Excel DLL bezpośrednio. W celu wdrożenia licencji, zobacz Używanie kluczy licencyjnych.
Jakie przestrzenie nazw należy importować?
Gdy Visual Studio i IronXL są zainstalowane, dodaj niezbędne przestrzenie nazw IronXL, umieszczając następującą linię na początku pliku C#:
// Add reference to the IronXL library
using IronXL;
// Add reference to the IronXL library
using IronXL;
' Add reference to the IronXL library
Imports IronXL
Do pracy z określonymi formatami Excel lub zaawansowanymi funkcjami możesz również potrzebować:
using IronXL.Formatting; // For cell styling
using IronXL.Drawing; // For images and charts
using System.Data; // For DataSet/DataTable operations
using IronXL.Formatting; // For cell styling
using IronXL.Drawing; // For images and charts
using System.Data; // For DataSet/DataTable operations
Imports IronXL.Formatting ' For cell styling
Imports IronXL.Drawing ' For images and charts
Imports System.Data ' For DataSet/DataTable operations
Jak załadować istniejący plik Excel?
Pliki Excel, znane również jako skoroszyty, składają się z wielu arkuszy, a każdy z nich zawiera wartości komórek. To open and read an Excel file, load it using the WorkBook class's Load method. Funkcjonalność LoadSpreadsheets obsługuje różne formaty.
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
// WorkBook workbook = WorkBook.Load(stream);
// }
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
// WorkBook workbook = WorkBook.Load(stream);
// }
' Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
' You can also load from streams for web applications
' Using stream = File.OpenRead("test.xlsx")
' Dim workbook As WorkBook = WorkBook.Load(stream)
' End Using
To inicjalizuje skoroszyt jako instancję WorkBook. Aby otworzyć konkretny WorkSheet, pobierz go z kolekcji WorkSheets. Przewodnik Zarządzaj arkuszem dostarcza więcej szczegółów na temat operacji na arkuszach:
// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets.First();
// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0]; // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1"); // By name
// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets.First();
// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0]; // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1"); // By name
' Access the first worksheet in the workbook
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Alternative ways to access worksheets
Dim sheetByIndex As WorkSheet = workbook.WorkSheets(0) ' By index
Dim sheetByName As WorkSheet = workbook.GetWorkSheet("Sheet1") ' By name
To uzyskuje dostęp do pierwszego arkusza w pliku Excel, przygotowanego do odczytu i zapisu.
Plik Excel
Jak odczytać dane z komórek Excel?
Po otwarciu pliku Excel jest gotowy do odczytu danych. Odczytywanie danych z plików Excel w C# za pomocą IronXL jest proste. Możesz odczytywać wartości komórek, określając odnośnik do komórki przy użyciu funkcji Wybierz Zakres.
Następujący kod pobiera wartość komórki:
// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;
// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;
// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");
// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;
// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;
// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");
// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
' Select the cell using Excel notation and retrieve its integer value
Dim cellValue As Integer = sheet("C2").IntValue
' You can also retrieve values in different formats
Dim textValue As String = sheet("C2").StringValue
Dim decimalValue As Decimal = sheet("C2").DecimalValue
Dim dateValue As DateTime = sheet("C2").DateTimeValue
Dim boolValue As Boolean = sheet("C2").BoolValue
' Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}")
' Check if cell is empty before reading
If Not sheet("C2").IsEmpty Then
Console.WriteLine($"Cell value: {sheet("C2").Value}")
End If
Oto wynik:
Odczytywanie Excela
Aby odczytać dane z zakresu komórek, użyj pętli do iteracji przez określony zakres. Przykład Wybierz zakres Excel dostarcza więcej wzorców:
// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read an entire column
foreach (var cell in sheet.GetColumn(0)) // Column A
{
if (!cell.IsEmpty)
{
Console.WriteLine($"Column A value: {cell.Text}");
}
}
// Read an entire row
foreach (var cell in sheet.GetRow(1)) // Row 2
{
Console.WriteLine($"Row 2 value: {cell.Text}");
}
// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read an entire column
foreach (var cell in sheet.GetColumn(0)) // Column A
{
if (!cell.IsEmpty)
{
Console.WriteLine($"Column A value: {cell.Text}");
}
}
// Read an entire row
foreach (var cell in sheet.GetRow(1)) // Row 2
{
Console.WriteLine($"Row 2 value: {cell.Text}");
}
' Iterate through a range of cells and display their address and text content
For Each cell In sheet("A2:A6")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next
' Read an entire column
For Each cell In sheet.GetColumn(0) ' Column A
If Not cell.IsEmpty Then
Console.WriteLine($"Column A value: {cell.Text}")
End If
Next
' Read an entire row
For Each cell In sheet.GetRow(1) ' Row 2
Console.WriteLine($"Row 2 value: {cell.Text}")
Next
Każda wartość w zakresie komórek A2:A6 jest dostępna i drukowana na konsoli.
Odczytywanie zakresu komórek
Dla bardziej szczegółowych przykładów odczytu i zapisu sprawdź Samouczek odczytu pliku Excel w C#. Możesz również konwertować dane Excel na DataTables dla łatwiejszej manipulacji:
// Convert worksheet to DataTable for easier data manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers
// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
// Convert worksheet to DataTable for easier data manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers
// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
' Convert worksheet to DataTable for easier data manipulation
Dim dataTable As DataTable = sheet.ToDataTable(True) ' True = first row contains headers
' Access data using DataTable methods
For Each row As DataRow In dataTable.Rows
Console.WriteLine($"Employee: {row("Name")}, Salary: {row("Salary")}")
Next
Jak mogę stworzyć nowy plik Excel?
IronXL ułatwia również tworzenie nowych skoroszytów do zapisywania i pobierania danych. Przewodnik "Tworzenie arkuszy kalkulacyjnych" zawiera obszerne przykłady.
Możesz utworzyć nowy plik Excel za pomocą jednej linii kodu:
// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);
// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);
// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);
// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);
// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
' Create a new workbook with the XLSX format
Dim workBook As New WorkBook(ExcelFileFormat.XLSX)
' Alternative: Create with XLS format for compatibility
Dim xlsWorkBook As New WorkBook(ExcelFileFormat.XLS)
' Set workbook metadata
workBook.Metadata.Title = "Employee Data"
workBook.Metadata.Author = "Your Name"
workBook.Metadata.Keywords = "employees, salary, data"
Następnie utwórz arkusz roboczy i dodaj do niego dane. Aby uzyskać informacje na temat bardziej zaawansowanych wzorców tworzenia, zobacz sekcję Tworzenie nowego pliku Excel.
Jak dodać arkusze do skoroszytu?
// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");
// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");
// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");
// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");
// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
' Create a worksheet named "GDPByCountry" in the workbook
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("GDPByCountry")
' Create multiple worksheets at once
Dim sheet2 As WorkSheet = workBook.CreateWorkSheet("PopulationData")
Dim sheet3 As WorkSheet = workBook.CreateWorkSheet("Summary")
' Copy an existing worksheet
Dim copiedSheet As WorkSheet = workSheet.CopySheet("GDPByCountryCopy")
Ten kod dodaje do skoroszytu arkusz o nazwie "GDPByCountry", umożliwiający dodawanie wartości do komórek. Dowiedz się więcej o zarządzaniu arkuszami i kopiowaniu arkuszy.
Aby ustawić wartość dla konkretnej komórki, użyj poniższego kodu:
// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";
// Add different types of data
workSheet["A2"].Value = 12345; // Integer
workSheet["A3"].Value = 99.99m; // Decimal
workSheet["A4"].Value = DateTime.Now; // Date
workSheet["A5"].Value = true; // Boolean
// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";
// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";
// Save the workbook
workBook.SaveAs("output.xlsx");
// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";
// Add different types of data
workSheet["A2"].Value = 12345; // Integer
workSheet["A3"].Value = 99.99m; // Decimal
workSheet["A4"].Value = DateTime.Now; // Date
workSheet["A5"].Value = true; // Boolean
// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";
// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";
// Save the workbook
workBook.SaveAs("output.xlsx");
' Set the value of cell A1 to "Example"
workSheet("A1").Value = "Example"
' Add different types of data
workSheet("A2").Value = 12345 ' Integer
workSheet("A3").Value = 99.99D ' Decimal
workSheet("A4").Value = DateTime.Now ' Date
workSheet("A5").Value = True ' Boolean
' Add formulas
workSheet("B1").Formula = "=SUM(A2:A3)"
' Set multiple cells at once using a range
workSheet("C1:C5").Value = "Bulk Value"
' Save the workbook
workBook.SaveAs("output.xlsx")
Ostateczny wynik to:
Dodaj wartość do komórki
Praca z różnymi formatami plików Excel
IronXL obsługuje wiele formatów Excel. Oto jak postępować z różnymi typami plików:
// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx"); // Convert CSV to XLSX
// Export to different formats
workbook.SaveAsCsv("output.csv", ";"); // CSV with semicolon delimiter
workbook.SaveAsJson("output.json"); // Export as JSON
workbook.SaveAsXml("output.xml"); // Export as XML
// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx"); // Convert CSV to XLSX
// Export to different formats
workbook.SaveAsCsv("output.csv", ";"); // CSV with semicolon delimiter
workbook.SaveAsJson("output.json"); // Export as JSON
workbook.SaveAsXml("output.xml"); // Export as XML
' Convert between formats
Dim workbook As WorkBook = WorkBook.Load("data.csv")
workbook.SaveAs("data.xlsx") ' Convert CSV to XLSX
' Export to different formats
workbook.SaveAsCsv("output.csv", ";") ' CSV with semicolon delimiter
workbook.SaveAsJson("output.json") ' Export as JSON
workbook.SaveAsXml("output.xml") ' Export as XML
Dowiedz się więcej o konwersji typów plików arkuszy kalkulacyjnych oraz konwersji plików XLSX do formatów CSV, JSON i XML.
Obsługa błędów i najlepsze praktyki
Podczas pracy z plikami Excel należy zapewnić odpowiednią obsługę błędów:
try
{
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.GetWorkSheet("Sheet1");
// Check if sheet exists
if (sheet == null)
{
Console.WriteLine("Worksheet not found!");
return;
}
// Process data
var value = sheet["A1"].Value;
}
catch (Exception ex)
{
Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
try
{
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.GetWorkSheet("Sheet1");
// Check if sheet exists
if (sheet == null)
{
Console.WriteLine("Worksheet not found!");
return;
}
// Process data
var value = sheet["A1"].Value;
}
catch (Exception ex)
{
Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
Imports System
Try
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
Dim sheet As WorkSheet = workbook.GetWorkSheet("Sheet1")
' Check if sheet exists
If sheet Is Nothing Then
Console.WriteLine("Worksheet not found!")
Return
End If
' Process data
Dim value = sheet("A1").Value
Catch ex As Exception
Console.WriteLine($"Error reading Excel file: {ex.Message}")
End Try
W przypadku aplikacji produkcyjnych warto rozważyć skonfigurowanie logowania i wdrożenie odpowiednich wzorców obsługi błędów.
Czego się nauczyliśmy?
W tym artykułe pokazano, jak otwierać i odczytywać pliki Excel, takie jak XLS i XLSX, w języku C# przy użyciu biblioteki IronXL. IronXL nie wymaga instalacji programu Microsoft Excel w systemie do wykonywania zadań związanych z Excelem, dzięki czemu idealnie nadaje się do wdrożeń w Dockerze i Azure Functions.
IronXL zapewnia kompleksowe rozwiązanie do programowego wykonywania zadań związanych z programem Excel, w tym obliczania formuł, sortowania ciągów znaków, przycinania, wyszukiwania i zamiany, scałania i rozdzielania, zapisywania plików i wielu innych. Można również ustawić formaty danych w komórkach, korzystać z formatowania warunkowego oraz tworzyć wykresy.
Aby poznać zaawansowane funkcje, zapoznaj się z grupowaniem i rozgrupowywaniem, nazwanymi zakresami, hiperłączami oraz zabezpieczaniem plików Excel. Pełna dokumentacja API zawiera szczegółowe informacje na temat wszystkich funkcji.
IronXL jest dostępny w ramach bezpłatnego 30-dniowego okresu próbnego i można uzyskać licencję na jego komercyjne wykorzystanie. Pakiet Lite IronXL zaczyna się od $999. Aby uzyskać dodatkowe zasoby, odwiedź sekcję samouczków lub zapoznaj się z przykładami kodu dla typowych scenariuszy.
Często Zadawane Pytania
Jak mogę otwierać pliki Excel w C# bez użycia Interop?
Możesz otwierać pliki Excel w C# bez użycia Interop, korzystając z biblioteki IronXL. Użyj metody WorkBook.Load, aby załadować plik Excel do instancji WorkBook, co pozwoli Ci uzyskać dostęp do danych w pliku i manipulować nimi.
Jakie formaty plików są kompatybilne z tą biblioteką C# dla programu Excel?
IronXL obsługuje różne formaty plików Excel, w tym XLS, XLSX, CSV i TSV. Dzięki temu programiści mogą elastycznie otwierać, odczytywać i zapisywać te formaty w swoich aplikacjach napisanych w języku C#.
Czy za pomocą tej biblioteki mogę edytować pliki Excel w języku C#?
Tak, za pomocą IronXL można edytować pliki Excel. Po załadowaniu skoroszytu można modyfikować dane, dodawać nowe arkusze, a następnie zapisywać zmiany z powrotem do pliku lub eksportować go w różnych formatach.
Jak zainstalować tę bibliotekę, aby używać jej w moim projekcie C#?
Aby zainstalować IronXL w projekcie C#, można użyć menedżera pakietów NuGet w Visual Studio w celu dodania biblioteki. Alternatywnie można pobrać bibliotekę DLL .NET Excel i odwołać się do niej w projekcie.
Czy za pomocą tej biblioteki można szyfrować pliki Excel?
Tak, IronXL umożliwia szyfrowanie i deszyfrowanie plików Excel. Możesz zabezpieczyć swoje dokumenty Excel hasłami, aby chronić poufne dane podczas operacji na plikach.
Czy ta biblioteka obsługuje ponowne obliczanie formuł w arkuszach Excel?
IronXL obsługuje automatyczne przeliczanie formuł, zapewniając, że wszelkie zmiany w danych automatycznie aktualizują formuły, tak jak w programie Excel.
Jak mogę odczytać konkretne wartości komórek w arkuszu Excel przy użyciu tej biblioteki?
Aby odczytać konkretne wartości komórek za pomocą IronXL, można odwołać się do komórki przy użyciu notacji programu Excel. Na przykład sheet["A1"].StringValue pobierze wartość ciągu znaków z komórki A1.
Czy z tej biblioteki można korzystać w różnych systemach operacyjnych?
Tak, IronXL jest kompatybilny z wieloma systemami operacyjnymi, w tym Windows, Linux i macOS. Obsługuje również wdrażanie w środowiskach Docker, Azure i AWS.
Jakie są zalety korzystania z tej biblioteki w porównaniu z MS Office Interop?
IronXL oferuje kilka zalet w porównaniu z MS Office Interop, takich jak brak konieczności instalowania programu Excel w systemie, lepsza wydajność w środowiskach serwerowych oraz łatwość użytkowania z nowoczesnymi aplikacjami .NET.
Czy dostępna jest bezpłatna wersja próbna tej biblioteki C# dla programu Excel?
Tak, IronXL oferuje 30-dniowy bezpłatny okres próbny, który pozwala przetestować jego funkcje i możliwości przed podjęciem decyzji o zakupie licencji komercyjnej do swoich projektów.




