EPPlus Excel'i DataTable C#'e Okuma (IronXL Eğitimi)
C#'de DataTable içine Excel verilerini okuyabilecek bir Excel kütüphanesi mi arıyorsunuz?
C#'de DataTable içine Excel dosyalarını okuma, veri analizi ve raporlama, veritabanlarına veri aktarma, veri taşıma, veri doğrulama ve temizleme, diğer sistemlerle entegrasyon, otomasyon ve toplu işleme gibi çeşitli endüstriler ve alanlarda birçok pratik uygulamaya sahiptir.
Bu makalede, Excel verilerini ve Excel dosyalarını DataTable içine okumak için bu özelliği sağlayan .NET Core için C#'de iki farklı Excel kütüphanesini tartışacak ve karşılaştıracağız. Kütüphaneler şunlardır
- EPPlus
- IronXL
1. EPPlus kütüphanesi
EPPlus, C# ile Excel dosyalarını oluşturmak ve düzenlemek için güçlü bir açık kaynak kütüphanesidir. Bu, geliştiricilerin Excel elektronik tablolarını programlı olarak oluşturmalarına, okumalarına ve değiştirmelerine olanak tanıyan, Microsoft Office veya Excel'in sunucu veya istemci makinelerine kurulmasını gerektirmeyen basit ve sezgisel bir API sağlar. EPPlus ile Excel dosyaları üzerinde kolayca çalışma sayfaları oluşturabilir, veri ekleyebilir, biçimlendirme uygulayabilir, grafikler oluşturabilir ve diğer işlemleri gerçekleştirebilirsiniz. Hem eski .xls formatını hem de yeni .xlsx formatını destekler ve verimli performans ve bellek yönetimi sağlar. Dinamik raporlar oluşturmanız, veri içe/dışa aktarmanız veya Excel ile ilgili görevleri otomatikleştirmeniz gereksin, EPPlus, C# uygulamalarınızda Excel dosyası işlemi yapmayı kolaylaştıracak kapsamlı özellikler ve yetenekler sunar.
2. IronXL
IronXL, geliştiricilere .NET uygulamaları içerisinde Excel dosyalarını zahmetsizce okuma, yazma ve manipüle etme yeteneği sağlayan güçlü ve çok yönlü bir kütüphanedir. IronXL, kullanıcı dostu ve kapsamlı API'si ile elektronik tablolarla çalışmanın karmaşık sürecini basitleştirir, geliştiricilere verileri sorunsuz bir şekilde çıkarmayı, hesaplamalar yapmayı, grafikler oluşturmayı ve raporlar hazırlamayı kolaylaştırır. Veri içe/dışa aktarma görevlerini otomatikleştirmek, veri analizi yapmak veya dinamik Excel şablonları oluşturmak olsun, IronXL, Excel verilerini işlerken doğruluk ve güvenilirlik sağlarken geliştiricilerin değerli zaman ve çabasını tasarruf eden güçlü bir çözüm sunar. Kesintisiz entegrasyonu, kapsamlı belgeleri ve geniş özellik yelpazesi ile IronXL, .NET framework'te Excel dosya manipülasyonu ile ilgili zorlukları aşmak isteyen geliştiriciler için güvenilir ve verimli bir araç olarak öne çıkmaktadır.
3. EPPlus kütüphanesini yüklemek
C# projenize EPPlus kütüphanesini kurmak için, öncelikle Visual Studio'da yeni bir konsol tabanlı proje oluşturmalısınız. Ardından, NuGet Package Manager kullanarak kolayca yükleyebilirsiniz.
Yeni proje oluşturulduktan sonra, Araçlar menüsüne gidin ve NuGet Paket Yöneticisi'nin üzerine gelin, ardından "Çözüm için NuGet Paketlerini Yönet" seçeneğini seçin.
Yeni bir pencere açılacak. Bu yeni pencerede, "Göz at" seçeneğine gidin ve "EPPlus"u arayın. Paketlerin bir listesi görünecek ve en son kararlı sürümü seçmelisiniz. Ardından, EPPlus kütüphanesini yüklemek için sağ taraftaki "Yükle" butonuna tıklayın.
İşte bu kadar, EPPlus projenize eklenecektir.
4. IronXL'nin Kurulumu
IronXL'i kurmanın birçok yöntemi vardır, ancak bu bölümde sadece NuGet Paket Yöneticisini kullanarak IronXL kurulumunu ele alacağız.
Tıpkı bölüm 3'te olduğu gibi, yeni bir proje oluşturun ve "Araçlar" kısmına giderek çözümler için NuGet Paket Yöneticisi'ni açın.
Yeni pencerede, arama çubuğuna "IronXL" anahtar kelimesini girin. Bir liste görünecek ve yüklemek istediğiniz IronXL paketini seçebilirsiniz. Ardından, projenize IronXL'i kurmak için "Install" butonuna tıklayın.
Artık IronXL kullanıma hazır.
5. Excel Dosyalarını ve Verileri EPPlus Kütüphanesi Kullanarak DataTable'a Okuma
Bu bölümde, C# EPPlus paket Excel kütüphanesini kullanarak DataTable olarak Excel okuma kodunu inceleyeceğiz.
Bir DataTable olarak okumak için bir örnek Excel dosyasına ihtiyacımız var. Bu amaçla, örnek bir Excel dosyası oluşturacağız.
Aşağıda, Excel dosyasını DataTable olarak okuma kodu bulunmaktadır.
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
Yukarıdaki kod, dosya yolu ve sayfa adı gibi giriş parametrelerini alıp bir DataTable olarak çıktı döndüren bir metot tanımlar. Ayrıca DataTable'un her bir satırına iterasyon yaparak verileri yazdırır.
5.1. Çıktı
Excel dosyasının içeriği konsola yazdırılacaktır.
6. IronXL kullanarak Excel Dosyalarını DataTable olarak Okuma
İronXL kullanarak bir Excel sayfasını DataTable olarak dönüştürmek ve okumak oldukça kolaydır ve sadece birkaç satır kod gerektirir. Ayrıca, önceki Excel dosyasını girdi olarak kullanacağız.
Aşağıdaki kod örneği, yukarıdaki kod ile aynı işlevi gerçekleştirir, ancak IronXL kullanarak.
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
Yukarıdaki kod örneğinde, Excel dosyasını yükleyip workSheet.ToDataTable(true) metodunu kullanarak DataTable'a dönüştürüyoruz.
6.1 Çıktı
Excel dosyasının içeriği konsola yazdırılacaktır.
7. Sonuç
Sonuç olarak, C#'de Excel dosyalarını okuyup DataTable'lara dönüştürme söz konusu olduğunda, hem EPPlus hem de IronXL güçlü özellikler sunan ve süreci basitleştiren mükemmel kütüphanelerdir.
EPPlus, Excel elektronik tablolarını programlı olarak oluşturmak, okumak ve değiştirmek için basit bir API sağlayan açık kaynaklı bir kütüphanedir. Hem .xls hem de .xlsx formatlarını destekler ve verimli performans ile bellek yönetimi sunar.
Öte yandan, IronXL, geliştiricilerin .NET uygulamalarında Excel dosyaları ile kolayca çalışmasını sağlayan çok yönlü bir kütüphanedir. Veri çıkarmak, hesaplamalar yapmak, grafikler oluşturmak ve raporlar oluşturmak için sezgisel bir API ve kapsamlı özellikler sunar. IronXL, veri içe/dışa aktarma, veri analizi ve dinamik şablon oluşturma gibi karmaşık Excel dosyası işleme görevlerini basitleştirir.
IronXL ve EPPlus'un kod örneklerini karşılaştırdığımızda, EPPlus kodunun oldukça uzun, karmaşık ve okunması zor olduğunu görüyoruz. Öte yandan, IronXL kodu oldukça basit ve okunması kolaydır. IronXL varsayılan çalışma sayfasını kullanır, ancak EPPlus'ta çalışma sayfasının adını vermeniz gerekir; aksi takdirde bir hata alırsınız.
Özetle, Excel dosyalarını manipüle etmek ve Excel dosyalarını DataTable olarak okumak için EPPlus yerine IronXL'i tavsiye ederim. Ayrıca, IronXL, basit kodlarla Excel dosyalarını işlerken EPPlus'tan çok daha fazla özellik sunar. Daha fazla IronXL eğitimi için lütfen aşağıdaki linki ziyaret edin.
Sıkça Sorulan Sorular
Excel verilerini C#'da bir DataTable'a nasıl okuyabilirim?
IronXL'yi kullanarak, Workbook.Load() ile Excel çalışma kitabını yükleyip, sayfa erişimi yaparak ve ToDataTable()'ı kullanarak verileri dönüştürerek Excel verilerini bir DataTable'a okuyabilirsiniz.
Excel manipülasyonu için IronXL kullanmanın avantajları nelerdir?
IronXL, Excel dosyası manipülasyonunu basitleştiren basit ve sezgisel bir API sunar. Veri çıkarımı, hesaplamalar, grafik oluşturma ve rapor üretimi gibi özellikleri içerecek şekilde kapsamlı bir çözüm haline getirir.
IronXL, .xls ve .xlsx dosya formatlarını destekliyor mu?
Evet, IronXL hem .xls hem de .xlsx dosya formatlarını destekler, farklı türde Excel dosyalarıyla çalışmada esneklik sağlar.
IronXL'ı Microsoft Office yüklemeden kullanabilir miyim?
Evet, IronXL, cihazınıza Microsoft Office veya Excel yüklemenize gerek kalmadan Excel dosyalarını manipüle etmek için kullanılabilir.
IronXL'yi bir .NET projesine nasıl kurarım?
IronXL'yi kurmak için .NET projenizdeki NuGet Paket Yöneticisini açın, 'IronXL' araması yapın ve paketi kurun. Bu, IronXL'yi projenize ekleyecek ve özelliklerini kullanmaya başlamanızı sağlayacaktır.
Excel dosyalarını bir DataTable'a okuma konusunda yaygın sorunlar nelerdir ve bunlar nasıl çözülür?
Yaygın sorunlar, yanlış dosya yolları, desteklenmeyen formatlar veya yanlış formatlanmış veriler olabilir. Dosya yolunun doğru olduğundan, formatın desteklendiğinden ve verinin düzgün olduğundan emin olun. IronXL, bu sorunları çözmeye yardımcı olacak açık hata mesajları sağlar.
Excel dosyalarını bir DataTable'a okuma konusunda IronXL, EPPlus ile nasıl karşılaştırılır?
IronXL, kullanım kolaylığı ve kapsamlı özellikleri ile dikkat çekerken, EPPlus da etkili olsa da uygulaması daha karmaşık olabilir. IronXL, geliştiriciler için daha basit bir API sunar.
IronXL büyük Excel dosyaları için uygun mu?
Evet, IronXL büyük Excel dosyalarını etkin bir şekilde işlemek üzere tasarlanmıştır, dosya manipülasyonu sırasında performansı ve bellek kullanımını optimize eden özellikler sunar.
IronXL veri analizi ve raporlaması için kullanılabilir mi?
Kesinlikle, IronXL veri analizi ve raporlaması için oldukça uygun, veri çıkarımı ve manipülasyonu, grafik oluşturma ve rapor oluşturma için güçlü özellikler sunar.
Geliştiricilere yönelik IronXL'nin sağladığı temel özellikler nelerdir?
IronXL'nin anahtar özellikleri arasında sorunsuz veri çıkarımı, güçlü hesaplama yetenekleri, kolay grafik oluşturma, etkili rapor üretimi ve geniş Excel dosya formatları desteği bulunur.




