Importuj plik Excel do DataTable z IronXL
C# Importuj plik Excel do DataTable z IronXL
Nie jest tajemnicą, że ręczne parsowanie plików Excel rzadko bywa atrakcją dnia programisty. Wszyscy tam byliśmy, zmagając się z przestarzałymi ciągami połączeń OLEDB lub próbując odwzorować niestrukturalne dane arkusza kalkulacyjnego w coś, co twoja aplikacja .NET faktycznie rozumie.
DataTable w C# to wielki równoważnik. Działa jako idealny most, zamieniając wiersze i kolumny w znaną strukturę gotową do zapytań LINQ, wiązania DataGrid lub szybkiej wizyty w bazie danych SQL.
IronXL usuwa ciężar z tego procesu. Zamiast skomplikowanych konfiguracji, używa jednej, intuicyjnej metody ToDataTable do przetwarzania konwersji. Niezależnie czy budujesz narzędzie raportowania, czy scenariusz migracji danych, oto jak możesz łatwo zaimportować dane Excel.
Chcesz podążać za tym? Użyj darmowego okresu próbnego IronXL, aby wypróbować tę potężną bibliotekę dla siebie.
How Can You Import an Excel File into a DataTable in C#?
Aby zaimportować plik Excel do DataTable w C#, załaduj skoroszyt używając WorkBook.Load, uzyskaj dostęp do docelowego arkusza i wywołaj metodę ToDataTable. To podejście działa z plikami w formatach XLSX, XLS, XLSM i CSV. Upewnij się, że odwołujesz się do następujących przestrzeni nazw w celu uzyskania dostępu do niezbędnych klas.
Zainstaluj IronXL za pośrednictwem Menedżera Pakietów NuGet, używając następującego polecenia w Visual Studio:
Install-Package IronXL.Excel
Następnie użyj tego zwięzłego fragmentu kodu, aby przetransportować swoje dane:
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file from the specified path
string filePath = "sales-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
// Access the first worksheet in the workbook
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable with first row as column headers
DataTable dt = worksheet.ToDataTable(true);
// Display the imported data
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(string.Join(" | ", row.ItemArray));
}
}
}
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file from the specified path
string filePath = "sales-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
// Access the first worksheet in the workbook
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable with first row as column headers
DataTable dt = worksheet.ToDataTable(true);
// Display the imported data
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(string.Join(" | ", row.ItemArray));
}
}
}
Imports IronXL
Imports System
Imports System.Data
Module Program
Sub Main(args As String())
' Load the Excel file from the specified path
Dim filePath As String = "sales-data.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
' Access the first worksheet in the workbook
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Convert worksheet to DataTable with first row as column headers
Dim dt As DataTable = worksheet.ToDataTable(True)
' Display the imported data
For Each row As DataRow In dt.Rows
Console.WriteLine(String.Join(" | ", row.ItemArray))
Next
End Sub
End Module
Wynik

Metoda WorkBook.Load odczytuje plik Excel z lokalizacji filePath w postaci łańcuchowej i tworzy obiekt skoroszytu zawierający wszystkie dane arkusza Excel. Parametr ToDataTable(true) wskazuje, że pierwszy wiersz zawiera nagłówki kolumn, które są automatycznie używane jako nazwy kolumn DataTable.
Jaka Jest Najlepsza Metoda Czytania Danych z Pliku Excel do DataTable?
Odczyt zawartości pliku Excel w sposób efektywny wymaga obsługi zarówno wierszy nagłówkowych, jak i surowych danych. Metoda ToDataTable IronXL akceptuje parametr logiczny, który decyduje, czy pierwszy wiersz jest traktowany jako nazwy kolumn, czy jako dane. Należy pamiętać, że obsługa rozszerzonych właściwości lub konwersja złożonych typów komórek mogą wymagać dodatkowej konfiguracji, ale metoda domyślna obsługuje większość przypadków niezawodnie.
using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
{
object value = row[i];
Console.Write($"{value}\t");
}
Console.WriteLine();
}
using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
{
object value = row[i];
Console.Write($"{value}\t");
}
Console.WriteLine();
}
Imports IronXL
Imports System.Data
' Load workbook from file path
Dim filePath As String = "C:\Data\inventory.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim worksheet As WorkSheet = workbook.WorkSheets(0)
' First row as headers (true) or as data (false)
Dim dataTableWithHeaders As DataTable = worksheet.ToDataTable(True)
Dim dataTableWithoutHeaders As DataTable = worksheet.ToDataTable(False)
' Process each row in the DataTable
For Each row As DataRow In dataTableWithHeaders.Rows
For i As Integer = 0 To dataTableWithHeaders.Columns.Count - 1
Dim value As Object = row(i)
Console.Write($"{value}" & vbTab)
Next
Console.WriteLine()
Next
Wynik

Ta elastyczność sprawia, że IronXL jest idealny do przetwarzania plików arkuszy Excel, niezależnie od ich struktury. W przeciwieństwie do pakietu EPPlus lub tradycyjnych metod wymagających nowych instancji OleDbDataAdapter, IronXL obsługuje konwersję w jednym wywołaniu metody. Biblioteka obsługuje .NET Core, .NET Framework i wdrożenia międzyplatformowe bez konieczności instalowania Microsoft Excel.
Jak Przekształcić Wiele Arkuszy Excel na DataSet?
Gdy twój skoroszyt Excel zawiera wiele arkuszy, przekształcenie na DataSet zachowuje każdy arkusz Excel jako oddzielną DataTable w ramach kolekcji. To podejście jest niezbędne dla aplikacji raportujących i przetwarzania danych z wielu arkuszy.
using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
Console.WriteLine($"Sheet: {table.TableName}");
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
foreach (DataRow row in table.Rows)
{
Console.WriteLine(string.Join(", ", row.ItemArray));
}
}
using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
Console.WriteLine($"Sheet: {table.TableName}");
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
foreach (DataRow row in table.Rows)
{
Console.WriteLine(string.Join(", ", row.ItemArray));
}
}
Imports IronXL
Imports System
Imports System.Data
' Load multi-sheet workbook
Dim workbook As WorkBook = WorkBook.Load("quarterly-reports.xlsx")
' Convert entire workbook to DataSet (each sheet becomes a DataTable)
Dim dataset As DataSet = workbook.ToDataSet()
' Iterate through all tables in the DataSet
For Each table As DataTable In dataset.Tables
Console.WriteLine($"Sheet: {table.TableName}")
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}")
For Each row As DataRow In table.Rows
Console.WriteLine(String.Join(", ", row.ItemArray))
Next
Next
Wynik

Metoda ToDataSet tworzy nowy DataSet zawierający obiekty DataTable dla każdego arkusza. Właściwość TableName każdej tabeli odzwierciedla oryginalną nazwę arkusza Excel, ułatwiając odwoływanie się do określonych danych podczas przetwarzania.
Jak zaimportować dane z Excela do bazy danych?
Typowy workflow obejmuje odczyt danych z pliku Excel i wstawianie ich do systemu bazy danych. Struktura DataTable integruje się bezproblemowo z ADO.NET do operacji na bazach danych.
using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
Console.WriteLine("No data to import");
return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Customers";
bulkCopy.WriteToServer(dt);
}
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
Console.WriteLine("No data to import");
return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Customers";
bulkCopy.WriteToServer(dt);
}
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
Imports IronXL
Imports System.Data
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim filePath As String = "C:\imports\customer-data.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Convert Excel data to DataTable
Dim dt As DataTable = worksheet.ToDataTable(True)
' Validate data before database insert
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Console.WriteLine("No data to import")
Return
End If
' Insert into database using SqlBulkCopy
Dim connectionString As String = "Server=.;Database=Sales;Trusted_Connection=True;"
Using connection As New SqlConnection(connectionString)
connection.Open()
Using bulkCopy As New SqlBulkCopy(connection)
bulkCopy.DestinationTableName = "Customers"
bulkCopy.WriteToServer(dt)
End Using
End Using
Console.WriteLine($"Imported {dt.Rows.Count} records successfully")
End Sub
End Module
Ten kod demonstruje, jak załadować plik Excel, przekonwertować go na DataTable i wykonać masowe wstawianie do bazy danych. Sprawdzenie wartości null zapewnia integralność danych przed próbą operacji importu.
Jak wyeksportować DataTable z powrotem do Excela?
IronXL wspiera dwukierunkowy przepływ danych, umożliwiając tworzenie plików Excel z obiektów DataTable na potrzeby raportowania i scenariuszy eksportu danych.
using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
Imports IronXL
Imports System.Data
' Create sample DataTable
Dim dt As New DataTable("Products")
dt.Columns.Add("ProductID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Price", GetType(Decimal))
dt.Rows.Add(1, "Widget", 29.99D)
dt.Rows.Add(2, "Gadget", 49.99D)
' Create new workbook and load DataTable
Dim workbook As WorkBook = WorkBook.Create()
workbook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}})
' Save as Excel file
workbook.SaveAs("exported-products.xlsx")
Wynik

Metoda LoadWorkSheetsFromDataSet przyjmuje DataSet zawierający obiekty DataTable i tworzy odpowiednie arkusze. Dowiedz się więcej o eksportowaniu DataTable do Excela w dokumentacji.
Wnioski
IronXL przekształca złożoność konwersji Excel-do-DataTable w proste wywołania metod. Biblioteka efektywnie obsługuje pliki XLSX, konwersję typów danych i ładowanie strumieniowe, zarówno przy imporcie pojedynczego arkusza Excel, jak i przetwarzaniu książek z wieloma arkuszami do kompletnego DataSet.
Połączenie elastyczności DataTable i intuicyjnego API IronXL umożliwia potężne workflow dotyczące danych dla integracji z bazami danych, systemów raportowania i wiązania danych aplikacji. Pobierz IronXL aby usprawnić przetwarzanie danych Excel, lub zakup licencję na wdrożenie produkcyjne.
Często Zadawane Pytania
Jak zaimportować plik Excel do tabeli danych (DataTable) przy użyciu języka C#?
Za pomocą IronXL można łatwo importować pliki Excel do tabeli danych (DataTable) w języku C#. IronXL udostępnia proste API do ładowania plików Excel i konwertowania ich na tabele danych w celu dalszej obróbki.
Jakie są zalety korzystania z IronXL do manipulacji plikami Excel w języku C#?
IronXL oferuje solidne rozwiązanie do manipulowania plikami Excel w języku C#, w tym odczytu, zapisu i konwersji danych Excel do różnych formatów, takich jak DataTables. Obsługuje wszystkie główne typy plików Excel i zapewnia wysoką wydajność oraz łatwość użytkowania.
Czy IronXL jest kompatybilny z .NET Core?
Tak, IronXL jest w pełni kompatybilny z .NET Core, umożliwiając wielopłatformowe tworzenie i wdrażanie aplikacji wymagających manipulacji plikami Excel.
Czy mogę używać IronXL do odczytu plików Excel w różnych formatach?
IronXL obsługuje odczyt plików Excel w różnych formatach, w tym XLSX, XLS, CSV i TSV, oferując elastyczność w obsłudze różnych typów danych Excel.
Czy IronXL obsługuje funkcje zabezpieczeń plików Excel?
Tak, IronXL obsługuje pliki Excel chronione hasłem, umożliwiając ładowanie i pracę z zabezpieczonymi dokumentami Excel w aplikacjach C#.
Jak przekonwertować plik Excel na tabelę danych (DataTable) za pomocą IronXL?
Dzięki IronXL można przekonwertować plik Excel na tabelę danych (DataTable), ładując skoroszyt, wybierając arkusz i wykorzystując wbudowane metody do eksportowania danych arkusza do tabeli danych.
Jakie rodzaje aplikacji mogą skorzystać z użycia IronXL?
IronXL idealnie nadaje się do wszelkich aplikacji wymagających manipulacji danymi programu Excel, takich jak narzędzia do analizy danych, systemy raportowania lub dowolne oprogramowanie, które musi importować, eksportować lub modyfikować dane programu Excel.
Czy IronXL może służyć do edycji plików Excel po zaimportowaniu ich do DataTable?
Tak, IronXL pozwala edytować i aktualizować pliki Excel nawet po zaimportowaniu ich do DataTable, zapewniając płynne wprowadzanie i zapisywanie zmian.
Jakie doświadczenie w programowaniu jest potrzebne do korzystania z IronXL?
IronXL został zaprojektowany z myślą o łatwości użytkowania i posiada przyjazny dla użytkownika interfejs API, z którego mogą korzystać programiści o każdym poziomie doświadczenia, dzięki czemu jest dostępny zarówno dla początkujących, jak i zaawansowanych użytkowników.




