
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:
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));
}
}
}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 ModuleWynik

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();
}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()
NextWynik

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));
}
}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
NextWynik

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");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 ModuleTen 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");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.

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.
Powiązane artykuły



