EPPlus Czytaj Excel do DataTable C# (Samouczek IronXL)
Szukasz biblioteki Excel do odczytu danych Excel do DataTable w C#?
Wczytywanie plików Excel do DataTable w języku C# ma kilka praktycznych zastosowań w różnych branżach i dziedzinach, takich jak analiza danych i raportowanie, importowanie danych do baz danych, migracja danych, walidacja i czyszczenie danych, integracja z innymi systemami, automatyzacja oraz przetwarzanie wsadowe.
W tym artykułe omówimy i porównamy dwie różne biblioteki Excel dla .NET Core w języku C#, które oferują tę funkcję odczytu danych i plików Excel do DataTable. Biblioteki te są
- EPPlus
- IronXL
1. Biblioteka EPPlus
EPPlus to potężna biblioteka open source do tworzenia i edycji plików Excel w języku C#. Zapewnia prosty i intuicyjny interfejs API, który pozwala programistom generować, odczytywać i modyfikować arkusze kalkulacyjne Excel programowo, bez konieczności instalowania pakietu Microsoft Office lub programu Excel na serwerze lub komputerach klienckich. Dzięki EPPlus można łatwo tworzyć arkusze, dodawać dane, stosować formatowanie, tworzyć wykresy i wykonywać inne operacje na plikach Excel. Obsługuje zarówno starszy format .xls, jak i nowszy format .xlsx oraz zapewnia wydajną pracę i zarządzanie pamięcią. Niezależnie od tego, czy potrzebujesz generować dynamiczne raporty, importować/eksportować dane, czy automatyzować zadania związane z Excelem, EPPlus oferuje kompleksowy zestaw funkcji i możliwości, które upraszczają obsługę plików Excel w aplikacjach C#.
2. IronXL
Biblioteka IronXL to potężna i wszechstronna biblioteka, która umożliwia programistom łatwe odczytywanie, zapisywanie i manipulowanie plikami Excel w ramach ich aplikacji .NET. Dzięki intuicyjnemu i kompleksowemu API IronXL upraszcza skomplikówany proces pracy z arkuszami kalkulacyjnymi, umożliwiając programistom płynne wyodrębnianie danych, wykonywanie obliczeń, tworzenie wykresów i generowanie raportów. Niezależnie od tego, czy chodzi o automatyzację zadań importu/eksportu danych, analizę danych czy tworzenie dynamicznych szablonów Excel, IronXL zapewnia solidne rozwiązanie, które oszczędza programistom cenny czas i wysiłek, jednocześnie zapewniając dokładność i niezawodność w obsłudze danych Excel. Dzięki płynnej integracji, obszernej dokumentacji i szerokiej gamie funkcji, IronXL staje się oczywistym wyborem dla programistów poszukujących niezawodnego i wydajnego narzędzia do pokonywania wyzwań związanych z manipulacją plikami Excel w środowisku .NET Framework.
3. Instalacja biblioteki EPPlus
Aby zainstalować bibliotekę EPPlus w projekcie C#, należy najpierw utworzyć nowy projekt konsolowy w programie Visual Studio. Następnie można je łatwo zainstalować za pomocą menedżera pakietów NuGet.
Po utworzeniu nowego projektu przejdź do menu Narzędzia, najedź kursorem na Menedżer pakietów NuGet, a następnie wybierz opcję "Zarządzaj pakietami NuGet dla rozwiązania".
Pojawi się nowe okno. W tym nowym oknie przejdź do opcji "Przeglądaj" i wyszukaj "EPPlus". Pojawi się lista pakietów, z której należy wybrać najnowszą stabilną wersję. Następnie kliknij przycisk "Zainstaluj" po prawej stronie, aby zainstalować bibliotekę EPPlus.
W ten sposób EPPlus zostanie dodany do Twojego projektu.
4. Instalacja IronXL
Istnieje wiele metod instalacji IronXL, ale w tej sekcji omówimy tylko instalację IronXL za pomocą menedżera pakietów NuGet.
Podobnie jak w sekcji 3, utwórz nowy projekt, przejdź do "Narzędzia" i otwórz Menedżera pakietów NuGet dla rozwiązań.
W nowym oknie wpisz słowo kluczowe "IronXL" w pasku wyszukiwania. Pojawi się lista, z której można wybrać pakiet IronXL, który chcesz zainstalować. Następnie kliknij przycisk "Zainstaluj", aby zainstalować IronXL w swoim projekcie.
Teraz IronXL jest gotowy do użycia.
5. Odczytywanie plików Excel i danych do tabeli DataTable przy użyciu biblioteki EPPlus
W tej sekcji przeanalizujemy kod służący do odczytu plików Excel jako DataTable przy użyciu biblioteki Excel pakietu EPPlus dla języka C#.
Potrzebujemy przykładowego pliku Excel do odczytania jako DataTable. W tym celu wygenerujemy przykładowy plik Excel.
Poniżej znajduje się kod służący do odczytu pliku Excel jako DataTable.
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string[] args)
{
var path = @"sample.xlsx"; // Specify the path to your Excel file
var data = ExcelDataToDataTable(path, "Table");
// Iterate through each row in the DataTable and print its contents
foreach (DataRow row in data.Rows)
{
foreach (var wsrow in row.ItemArray)
{
Console.Write(wsrow + " ");
}
Console.WriteLine();
}
}
/// <summary>
/// Converts Excel sheet data to a DataTable.
/// </summary>
/// <param name="filePath">The path to the Excel file.</param>
/// <param name="sheetName">The name of the worksheet to read from.</param>
/// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
/// <returns>DataTable containing Excel data.</returns>
public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
{
DataTable dt = new DataTable();
var fi = new FileInfo(filePath);
// Check if the file exists
if (!fi.Exists)
throw new Exception("File " + filePath + " does not exist.");
// Set the license context for EPPlus
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// Load the Excel file into an EPPlus ExcelPackage
using (var xlPackage = new ExcelPackage(fi))
{
// Get the specified worksheet from the workbook
var worksheet = xlPackage.Workbook.Worksheets[sheetName];
// Convert the worksheet to a DataTable, optionally using the first row as column names
dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
{
c.FirstRowIsColumnNames = hasHeader;
});
}
return dt;
}
}
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string[] args)
{
var path = @"sample.xlsx"; // Specify the path to your Excel file
var data = ExcelDataToDataTable(path, "Table");
// Iterate through each row in the DataTable and print its contents
foreach (DataRow row in data.Rows)
{
foreach (var wsrow in row.ItemArray)
{
Console.Write(wsrow + " ");
}
Console.WriteLine();
}
}
/// <summary>
/// Converts Excel sheet data to a DataTable.
/// </summary>
/// <param name="filePath">The path to the Excel file.</param>
/// <param name="sheetName">The name of the worksheet to read from.</param>
/// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
/// <returns>DataTable containing Excel data.</returns>
public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
{
DataTable dt = new DataTable();
var fi = new FileInfo(filePath);
// Check if the file exists
if (!fi.Exists)
throw new Exception("File " + filePath + " does not exist.");
// Set the license context for EPPlus
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// Load the Excel file into an EPPlus ExcelPackage
using (var xlPackage = new ExcelPackage(fi))
{
// Get the specified worksheet from the workbook
var worksheet = xlPackage.Workbook.Worksheets[sheetName];
// Convert the worksheet to a DataTable, optionally using the first row as column names
dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
{
c.FirstRowIsColumnNames = hasHeader;
});
}
return dt;
}
}
Imports OfficeOpenXml
Imports System
Imports System.Data
Imports System.IO
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim path = "sample.xlsx" ' Specify the path to your Excel file
Dim data = ExcelDataToDataTable(path, "Table")
' Iterate through each row in the DataTable and print its contents
For Each row As DataRow In data.Rows
For Each wsrow In row.ItemArray
Console.Write(wsrow & " ")
Next wsrow
Console.WriteLine()
Next row
End Sub
''' <summary>
''' Converts Excel sheet data to a DataTable.
''' </summary>
''' <param name="filePath">The path to the Excel file.</param>
''' <param name="sheetName">The name of the worksheet to read from.</param>
''' <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
''' <returns>DataTable containing Excel data.</returns>
Public Shared Function ExcelDataToDataTable(ByVal filePath As String, ByVal sheetName As String, Optional ByVal hasHeader As Boolean = True) As DataTable
Dim dt As New DataTable()
Dim fi = New FileInfo(filePath)
' Check if the file exists
If Not fi.Exists Then
Throw New Exception("File " & filePath & " does not exist.")
End If
' Set the license context for EPPlus
ExcelPackage.LicenseContext = LicenseContext.NonCommercial
' Load the Excel file into an EPPlus ExcelPackage
Using xlPackage = New ExcelPackage(fi)
' Get the specified worksheet from the workbook
Dim worksheet = xlPackage.Workbook.Worksheets(sheetName)
' Convert the worksheet to a DataTable, optionally using the first row as column names
dt = worksheet.Cells(1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column).ToDataTable(Sub(c)
c.FirstRowIsColumnNames = hasHeader
End Sub)
End Using
Return dt
End Function
End Class
Powyższy kod definiuje metodę, która przyjmuje parametry wejściowe, takie jak ścieżka do pliku i nazwa arkusza, i zwraca DataTable jako wynik. Przechodzi również przez każdy wiersz DataTable, drukując dane.
5.1. Wynik
Wynikiem będzie zawartość pliku Excel wydrukowana na konsoli.
6. Odczytywanie plików Excel jako DataTable przy użyciu IronXL
Konwersja arkusza Excel i odczytanie go jako DataTable jest dość łatwe przy użyciu IronXL, wystarczy zaledwie kilka wierszy kodu. Dodatkowo jako dane wejściowe wykorzystamy poprzedni plik Excel.
Poniższy przykład kodu realizuje tę samą funkcjonalność co powyższy kod, ale przy użyciu IronXL.
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file into an IronXL WorkBook
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Get the default worksheet from the workbook
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Convert the worksheet to a DataTable, specifying that the first row contains column names
DataTable table = workSheet.ToDataTable(true);
// Iterate through each row in the DataTable and print its contents
foreach (DataRow row in table.Rows)
{
foreach (var cell in row.ItemArray)
{
Console.Write(cell + " ");
}
Console.WriteLine();
}
}
}
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file into an IronXL WorkBook
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Get the default worksheet from the workbook
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Convert the worksheet to a DataTable, specifying that the first row contains column names
DataTable table = workSheet.ToDataTable(true);
// Iterate through each row in the DataTable and print its contents
foreach (DataRow row in table.Rows)
{
foreach (var cell in row.ItemArray)
{
Console.Write(cell + " ");
}
Console.WriteLine();
}
}
}
Imports IronXL
Imports System
Imports System.Data
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Load the Excel file into an IronXL WorkBook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
' Get the default worksheet from the workbook
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Convert the worksheet to a DataTable, specifying that the first row contains column names
Dim table As DataTable = workSheet.ToDataTable(True)
' Iterate through each row in the DataTable and print its contents
For Each row As DataRow In table.Rows
For Each cell In row.ItemArray
Console.Write(cell & " ")
Next cell
Console.WriteLine()
Next row
End Sub
End Class
W powyższym przykładzie kodu po prostu ładujemy plik Excel i konwertujemy go na DataTable za pomocą metody workSheet.ToDataTable(true).
6.1 Wynik
Wynikiem będzie zawartość pliku Excel wydrukowana na konsoli.
7. Podsumowanie
Podsumowując, jeśli chodzi o odczytywanie plików Excel i konwertowanie ich na DataTables w C#, zarówno EPPlus, jak i IronXL są doskonałymi bibliotekami, które oferują zaawansowane funkcje i upraszczają ten proces.
EPPlus to biblioteka typu open source, która zapewnia prosty interfejs API do programowego generowania, odczytywania i modyfikowania arkuszy kalkulacyjnych Excel. Obsługuje zarówno formaty .xls, jak i .xlsx oraz zapewnia wydajną pracę i zarządzanie pamięcią.
Z drugiej strony biblioteka IronXL to wszechstronna biblioteka, która umożliwia programistom łatwą pracę z plikami Excel w aplikacjach .NET. Oferuje intuicyjny interfejs API i kompleksowe funkcje do pobierania danych, wykonywania obliczeń, tworzenia wykresów i generowania raportów. IronXL upraszcza złożone zadania związane z obsługą plików Excel, takie jak import/eksport danych, analiza danych oraz dynamiczne tworzenie szablonów.
Porównując przykłady kodu zarówno IronXL, jak i EPPlus, stwierdzamy, że kod EPPlus jest dość długi, złożony i trudny do odczytania. Z drugiej strony kod IronXL jest dość prosty i łatwy do odczytania. IronXL używa domyślnego arkusza, ale w EPPlus trzeba podać nazwę arkusza; w przeciwnym razie pojawi się błąd.
Podsumowując, do manipulowania plikami Excel i odczytywania ich jako DataTables poleciłbym raczej IronXL niż EPPlus. Ponadto IronXL oferuje znacznie więcej funkcji niż EPPlus w zakresie obsługi plików Excel za pomocą prostego kodu. Aby uzyskać więcej samouczków dotyczących IronXL, odwiedź poniższy link.
Często Zadawane Pytania
Jak wczytać dane z Excela do tabeli danych (DataTable) w języku C#?
Możesz użyć IronXL do wczytania danych z Excela do DataTable, ładując skoroszyt Excela za pomocą WorkBook.Load(), uzyskując dostęp do arkusza i używając ToDataTable() do konwersji danych.
Jakie są zalety korzystania z IronXL do manipulacji danymi w Excelu?
IronXL oferuje proste i intuicyjne API, które ułatwia pracę z plikami Excel. Zawiera funkcje takie jak wyciąganie danych, obliczenia, tworzenie wykresów i generowanie raportów, co czyni go kompleksowym rozwiązaniem dla programistów.
Czy IronXL obsługuje formaty plików .xls i .xlsx?
Tak, IronXL obsługuje zarówno formaty plików .xls, jak i .xlsx, co zapewnia elastyczność w pracy z różnymi typami plików Excel.
Czy mogę korzystać z IronXL bez zainstalowanego pakietu Microsoft Office?
Tak, IronXL może służyć do edycji plików Excel bez konieczności instalowania pakietu Microsoft Office lub programu Excel na komputerze.
Jak zainstalować IronXL w projekcie .NET?
Aby zainstalować IronXL, otwórz menedżera pakietów NuGet w swoim projekcie .NET, wyszukaj „IronXL” i zainstaluj pakiet. Spowoduje to dodanie IronXL do projektu i umożliwi korzystanie z jego funkcji.
Jakie są typowe problemy związane z wczytywaniem plików Excel do tabeli danych (DataTable) i jak je rozwiązywać?
Typowe problemy to nieprawidłowe ścieżki plików, nieobsługiwane formaty lub nieprawidłowo sformatowane dane. Upewnij się, że ścieżka pliku jest poprawna, format jest obsługiwany, a dane są czyste. IronXL wyświetla jasne komunikaty o błędach, które pomagają rozwiązać te problemy.
Jak IronXL wypada w porównaniu z EPPlus pod względem wczytywania plików Excel do DataTable?
IronXL wyróżnia się łatwością obsługi i bogatym zestawem funkcji, natomiast EPPlus jest równie skuteczny, ale jego wdrożenie może być bardziej skomplikowane. IronXL zapewnia programistom prostsze API.
Czy IronXL nadaje się do dużych plików Excel?
Tak, IronXL został zaprojektowany do wydajnej obsługi dużych plików Excel, oferując funkcje, które optymalizują wydajność i wykorzystanie pamięci podczas operacji na plikach.
Czy IronXL może być wykorzystywany do analizy danych i tworzenia raportów?
Oczywiście, IronXL doskonale nadaje się do analizy danych i raportowania, oferując rozbudowane funkcje do pozyskiwania i przetwarzania danych, tworzenia wykresów oraz generowania raportów.
Jakie są kluczowe funkcje IronXL, które przynoszą korzyści programistom?
Kluczowe funkcje IronXL obejmują płynne pozyskiwanie danych, zaawansowane możliwości obliczeniowe, łatwe tworzenie wykresów, wydajne generowanie raportów oraz szerokie wsparcie dla formatów plików Excel.




