Altbilgi içeriğine atla
IRONXL KULLANARAK

IronXL ile DataTable'a Excel Dosyası İçe Aktarma

C#'da IronXL ile Excel Dosyasını DataTable'a İçe Aktarma

Manuel olarak Excel dosyalarını çözümlemenin, bir geliştiricinin gününü nadiren aydınlattığı bir sır değil. Hepimiz oradaydık, eski OLEDB bağlantı dizeleriyle uğraşırken ya da yapısız hesap tablosu verilerini .NET uygulamanızın gerçekten anladığı bir şeyle eşlemeye çalışırken.

C#'da DataTable büyük eşitleyici olarak çalışır. Bu, o satırları ve sütunları tanıdık bir yapıya dönüştürerek LINQ sorgularına, DataGrid bağlamasına veya bir SQL veritabanına hızlı bir gezintiye hazır hale getirir.

IronXL, bu süreçten ağır yükü alır. Karmaşık yapılandırmalar yerine, dönüşümü ele almak için tek bir sezgisel ToDataTable yöntemini kullanır. Raporlama aracı ya da veri taşınma betiği oluşturuyor olun, Excel verilerini zahmetsizce nasıl içe aktarabileceğiniz burada.

Takip etmek ister misiniz? Bu güçlü kütüphaneyi kendiniz denemek için IronXL'nin ücretsiz deneme sürümünü kullanın.

How Can You Import an Excel File into a DataTable in C#?

C#'da Excel dosyasını DataTable içe aktarmak için, WorkBook.Load kullanarak çalışma kitabını yükleyin, hedef çalışma sayfasına erişin ve ToDataTable metodunu çağırın. Bu yaklaşım, XLSX dosyaları ile çalışır, XLS, XLSM ve CSV formatlarını da destekler. Gerekli sınıflara erişmek için aşağıdaki isim alanlarını belirttiğinizden emin olun.

Visual Studio'da NuGet Paket Yöneticisi kullanarak, aşağıdaki komutla IronXL'yi yükleyin:

Install-Package IronXL.Excel

Sonra, verinizi hareket ettirmek için bu kısa kod parçacığını kullanın:

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
$vbLabelText   $csharpLabel

Çıktı

IronXL ile DataTable'a Excel Dosyası İçe Aktarma: Resim 1 - Excel dosyası bir DataTable'a aktarıldı

WorkBook.Load metodu, Excel dosyasını filePath konumundan okur ve tüm Excel sayfası verilerini içeren bir çalışma kitabı nesnesi oluşturur. ToDataTable(true) parametresi, ilk satırın otomatik olarak DataTable sütun adları olarak kullanılan sütun başlıklarını içerdiğini belirtir.

Excel Dosya Verilerini DataTable'a Okumak İçin En İyi Yöntem Nedir?

Excel dosya içeriğini verimli bir şekilde okumak, hem başlık satırlarının hem de ham veri senaryolarının ele alınmasını gerektirir. IronXL'un ToDataTable yöntemi, ilk satırın sütun adları olarak mı yoksa veri olarak mı kabul edileceğini belirleyen bir boolean parametre alır. Genişletilmiş özelliklerin ele alınması veya karmaşık hücre türlerinin dönüştürülmesi ek yapılandırma gerektirebilir, ancak varsayılan yöntem çoğu durumu sağlam bir şekilde ele alır.

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
$vbLabelText   $csharpLabel

Çıktı

IronXL ile DataTable'a Excel Dosyası İçe Aktarma: Resim 2 - Excel dosyasını bir DataTable'a içe aktarma ve okumanın çıktısı

Bu esneklik, IronXL'u Excel tablolama dosyalarını yapılarından bağımsız olarak işlemek için ideal yapar. EPPlus paketi veya yeni OleDbDataAdapter örnekleri gerektiren geleneksel yöntemlerin aksine, IronXL dönüştürme işlemini tek bir yöntem çağrısıyla yönetir. Kütüphane, Microsoft Excel kurulumu gerektirmeksizin .NET Core, .NET Framework ve platformlar arası dağıtımı destekler.

Birden Fazla Excel Çalışma Sayfasını DataSet'e Nasıl Dönüştürürsünüz?

Excel çalışma kitabınız birden fazla sayfa içerdiğinde, DataSet'e dönüştürmek her Excel çalışma sayfasını koleksiyon içinde ayrı bir DataTable olarak korur. Bu yaklaşım, raporlama uygulamaları ve çok sayfalı veri işleme için esastır.

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
$vbLabelText   $csharpLabel

Çıktı

IronXL ile DataTable'a Excel Dosyası İçe Aktarma: Resim 3 - Çok sayfalı Excel dosyasını bir DataSet'e aktarma çıktısı

ToDataSet yöntemi, her çalışma sayfası için DataTable nesneleri içeren yeni bir DataSet oluşturur. Her tablonun TableName özelliği, özgün Excel sayfası adını yansıtarak işleme sırasında belirli verilere kolaylıkla başvurmanızı sağlar.

Excel'den Bir Veritabanına Nasıl Veri Aktarabilirsiniz?

Yaygın bir iş akışı, Excel dosya verilerini okumayı ve bunları bir veritabanı sistemine eklemeyi içerir. DataTable yapısı, ADO.NET ile veritabanı işlemleri için sorunsuz bir şekilde entegre olur.

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
$vbLabelText   $csharpLabel

Bu kod, bir Excel dosyasını yüklemeyi, bir DataTable'a dönüştürmeyi ve toplu veritabanı eklemesi yapmayı nasıl gerçekleştireceğinizi gösterir. Null kontrolü, aktarma işlemine başlamadan önce veri bütünlüğünü sağlar.

Bir DataTable'ı Excel'e Geri Nasıl Aktarırsınız?

IronXL, iki yönlü veri akışını destekleyerek raporlama ve veri aktarma senaryoları için DataTable nesnelerinden Excel dosyaları oluşturmanıza olanak tanır.

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")
$vbLabelText   $csharpLabel

Çıktı

IronXL ile DataTable'a Excel Dosyası İçe Aktarma: Resim 4 - DataTable Excel'e aktarıldı

LoadWorkSheetsFromDataSet yöntemi, DataTable nesnelerinizi içeren bir DataSet'i kabul eder ve karşılık gelen çalışma sayfalarını oluşturur. Belgelerde daha fazla bilgi için DataTable'ın Excel'e nasıl aktarılacağını öğrenin.

Sonuç

IronXL, Excel'den DataTable dönüştürme karmaşıklığını doğrudan yöntem çağrılarına dönüştürür. İster tek bir Excel çalışma sayfasını aktarın ister çok sayfalı çalışma kitaplarını tam bir DataSet'e işleyin, kütüphane XLSX dosyalarını, veri türü dönüştürmesini ve akış tabanlı yüklemeyi verimli bir şekilde yönetir.

DataTable esnekliği ve IronXL'un sezgisel API'si, veritabanı entegrasyonu, raporlama sistemleri ve uygulama veri bağlaması için güçlü veri iş akışları sağlar. Excel veri işlemenizi kolaylaştırmak için IronXL'u indir veya üretim dağıtımı için bir lisans satın alın.

Şimdi IronXL ile başlayın.
green arrow pointer

Sıkça Sorulan Sorular

Bir Excel dosyasını C# kullanarak bir DataTable'a nasıl içe aktarabilirim?

IronXL'i kullanarak Excel dosyalarını C#'ta kolaylıkla bir DataTable'a içe aktarabilirsiniz. IronXL, Excel dosyalarını yüklemek ve onları daha fazla işleme için DataTables'e dönüştürmek üzere basit bir API sağlar.

C#'ta Excel dosyası manipülasyonu için IronXL kullanmanın faydaları nelerdir?

IronXL, Excel dosyalarını C#'ta okuma, yazma ve Excel verilerini DataTable gibi çeşitli formatlara dönüştürme için sağlam bir çözüm sunar. Tüm büyük Excel dosya türlerini destekler ve kullanım kolaylığı ve yüksek performans sunar.

IronXL .NET Core ile uyumlu mu?

Evet, IronXL, Excel dosya manipülasyonu gerektiren uygulamaların geliştirilmesi ve dağıtılmasını mümkün kılan .NET Core ile tamamen uyumludur.

IronXL'i, farklı formatlarda Excel dosyalarını okumak için kullanabilir miyim?

IronXL, XLSX, XLS, CSV ve TSV dahil olmak üzere çeşitli formatlarda Excel dosyalarını okumayı destekler, böylece farklı türde Excel verilerini işleme esnekliği sağlar.

IronXL, Excel dosyası güvenlik özelliklerini destekliyor mu?

Evet, IronXL, şifre korumalı Excel dosyalarını destekler, bu da C# uygulamalarınız içinde güvenli Excel belgeleri yükleyip çalışmanızı sağlar.

IronXL kullanarak bir Excel dosyasını DataTable'a nasıl dönüştürebilirim?

IronXL ile, bir Excel dosyasını DataTable'a dönüştürmek için çalışma kitabını yükleyin, çalışma sayfasını seçin ve çalışma sayfası verilerini bir DataTable'a dışa aktarmak için yerleşik yöntemleri kullanın.

Hangi tür uygulamalar IronXL'i kullanmaktan fayda sağlar?

Excel veri manipülasyonu gerektiren veri analizi araçları, raporlama sistemleri veya Excel verilerini içe aktarma, dışa aktarma veya değiştirme gereksinimi olan herhangi bir yazılım gibi tüm uygulamalar IronXL'i kullanmaktan fayda sağlar.

IronXL, bir DataTable'a içe aktardıktan sonra Excel dosyalarını düzenlemek için kullanılabilir mi?

Evet, IronXL size bir DataTable'a içe aktardıktan sonra bile Excel dosyalarını düzenleme ve güncelleme imkanı tanır, değişiklikleri değiştirmekte ve kaydetmektedir.

IronXL'i kullanmak için ne düzeyde bir kodlama deneyimi gerekiyor?

IronXL, kullanıcı dostu bir API'ye sahip olup, her türlü deneyim seviyesindeki geliştiricilerce kullanılabilir olarak tasarlandığından, hem acemi hem de ileri düzey kullanıcılar için erişilebilir hale gelir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara