EPPlus Excel'i DataTable C#'e Okuma (IronXL Eğitimi)
C# icin bir DataTable'ye Excel verilerini okumak icin bir Excel kutuphanesi mi ariyorsunuz?
C#'de bir DataTable'ye Excel dosyalarini okumak, veri analizi ve raporlama, veri tabanlarina veri aktarma, veri migrasyonu, veri doğrulama ve temizleme, diğer sistemlerle entegrasyon, otomasyon ve toplu işleme gibi çeşitli endustri ve alanlarda bircok pratik uygulamaya sahiptir.
Bu makalede, .NET Core icin C#'te Excel verilerini ve Excel dosyalarini bir DataTable'ye okumak icin bu ozelligi sunan iki farkli Excel kutuphanesini tartisacagiz ve karsilastiracagiz. Kütüphaneler
- EPPlus
- IronXL
1. EPPlus kütüphanesi
EPPlus C# içinde Excel dosyaları oluşturma ve manipüle etme için güçlü bir açık kaynak kütüphanedir. Microsoft Office veya Excel'in sunucu ya da istemci makinelerine yüklenmesine gerek kalmadan, geliştiricilerin programatik olarak Excel hesap tabloları üretmelerine, okumalarına ve değiştirmelerine olanak tanıyan basit ve sezgisel bir API sunar. EPPlus ile, kolayca çalışma sayfaları oluşturabilir, veri ekleyebilir, biçimlendirme uygulayabilir, grafikler oluşturabilir ve Excel dosyalarında diğer işlemleri gerçekleştirebilirsiniz. Eski .xls biçimini ve yeni .xlsx biçimini destekler ve verimli performans ve hafıza yönetimi sağlar. İster dinamik raporlar üretmek, veri alıp/vermek ister Excel ile ilgili görevleri otomatikleştirmek isteyin, EPPlus, C# uygulamalarında Excel dosya işlemlerini basitleştirmek için kapsamlı bir özellik ve yetenek seti sunar.
2. IronXL
IronXL, geliştiricilere .NET uygulamaları içinde Excel dosyalarını okuyup, yazıp ve manipüle etme yeteneği kazandıran güçlü ve çok yönlü bir kütüphanedir. Sezgisel ve kapsamlı API'si ile IronXL, hesap tablolarıyla çalışmanın aksi takdirde zor olan sürecini basitleştirir, geliştiricilerin veri çıkarmalarını, hesaplamalar yapmalarını, grafikler oluşturmalarını, kolaylıkla raporlar üretmelerini sağlar. İster veri alım/dışa aktarma görevlerini otomatikleştirme, veri analizi yapma veya dinamik Excel şablonları oluşturma olsun, IronXL, geliştiricilerin değerli zaman ve çaba tasarrufu yaparken, Excel verilerinin işlenmesinde doğruluk ve güvenilirliği sağlamalarına olanak tanıyan sağlam bir çözüm sunar. Sorunsuz entegrasyonu, kapsamlı belgeleri ve geniş özellik yelpazesi ile IronXL, .NET çerçevesinde Excel dosya manipülasyonuyla ilişkili zorlukların üstesinden gelmek isteyen geliştiricilerin başvuracağı bir araç olarak öne çıkıyor.
3. EPPlus kütüphanesini yükleme
EPPlus kütüphanesini C# projenize yüklemek için ilk önce Visual Studio'da yeni bir konsol tabanlı proje oluşturmanız gerekir. Bundan sonra, kolayca NuGet Paket Yöneticisi'ni kullanarak yükleyebilirsiniz.
Yeni proje oluşturulduktan sonra, Araçlar'a gidin ve NuGet Paket Yöneticisi üzerine gelin, ardından "Çözüm için NuGet Paketlerini Yönet" seçeneğini seçin.
Yeni bir pencere görünecektir. "Gözat" seçeneğine gidin ve "EPPlus" arayın. Paketler listesinden en son kararlı sürümü seçin. Ardından, sağdaki "Yükle" düğmesine tıklayarak EPPlus kütüphanesini yükleyin.
Bu şekilde, EPPlus projenize eklenir.
4. IronXL'yi yükleme
IronXL'yi yüklemenin birçok yöntemi mevcuttur, ama bu bölümde sadece NuGet Paket Yöneticisi kullanarak yüklemeyi tartışacağız.
- bölümde olduğu gibi, yeni bir proje oluşturun ve çözümü için "Araçlar"a gidin ve NuGet Paket Yöneticisi'ni açın.
Yeni pencerede, arama çubuğuna "IronXL" anahtar kelimesini girin. Bir liste çıkacak ve yüklemek istediğiniz IronXL paketini seçebilirsiniz. Ardından, IronXL'yi projenize yüklemek için "Yükle" düğmesine tıklayın.
Artık IronXL kullanıma hazır.
5. EPPlus Kütüphanesi Kullanarak DataTable'a Excel Dosyalarını ve Verilerini Okuma
Bu bölümde, C# EPPlus paketi Excel kutuphanesini kullanarak bir DataTable olarak Excel'i okuma kodunu inceleyecegiz.
Bir DataTable olarak okunacak örnek bir Excel dosyasina ihtiyaçimiz var. Bunun için bir örnek Excel dosyası üreteceğiz.
Asagida bir DataTable olarak Excel dosyasini okuma kodu yer almaktadir.
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
Yukaridaki kod, dosya yolu ve sayfa adini gibi girdi parametrelerini alan ve cikti olarak bir DataTable donderen bir metode tanimlar. Ayrica DataTable'nin her satirinda yineleyerek verileri yazdirir.
5.1. Çıktı
Çıktı, Excel dosyasının konsola yazdırılmış içeriği olacaktır.
6. IronXL Kullanarak DataTable Olarak Excel Dosyalarını Okuma
IronXL kullanarak bir Excel sayfasini dönüştürmek ve bir DataTable olarak okumak çok kolay, sadece birkac satir kodla yapilabiliyor. Ayrıca, önceki Excel dosyasını giriş olarak kullanacağız.
Aşağıdaki kod örneği yukarıdaki kodun aynı işlevselliğini yerine getirir, 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
Yukaridaki kod orneginde, Excel dosyasini basitce yukluyoruz ve workSheet.ToDataTable(true) methodunu kullanarak bir DataTable'ye dönüştüruyoruz.
6.1 Çıktı
Çıktı, Excel dosyasının konsola yazdırılmış içeriği olacaktır.
7. Sonuç
Sonuc olarak, C#'te Excel dosyalarini okumak ve DataTable'lere dönüştürmek soz konusu oldugunda, hem EPPlus hem de IronXL guclu özellikler sunan ve sureci basitlestiren harika kutuphanelerdir.
EPPlus programatik olarak Excel hesap tabloları üretmek, okumak ve değiştirmek için basit bir API sunan açık kaynaklı bir kütüphanedir. Hem .xls hem de .xlsx formatlarını destekler ve verimli performans ve hafıza yönetimi sunar.
Öte yandan, IronXL geliştiricilere .NET uygulamalarında Excel dosyalarıyla zahmetsizce çalışma imkanı sağlayan çok yönlü bir kütüphanedir. Verileri çıkarmak, hesaplamalar yapmak, grafikler oluşturmak ve raporlar üretmek için sezgisel bir API ve kapsamlı özellikler sunar. IronXL, veri alım/dışa aktarma, veri analizi ve dinamik şablon oluşturma gibi karmaşık Excel dosya manipülasyon görevlerini basitleştirir.
Hem IronXL hem de EPPlus'ın kod örneklerini karşılaştırdığımızda, EPPlus kodunun oldukça uzun, karmaşık ve okunması zor olduğunu buluyoruz. Ö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.
Ozetle, Excel dosyalarini manipule etmek ve DataTable olarak okumak icin EPPlus yerine IronXL'i tavsiye ederim. Ayrıca, IronXL, Excel dosyalarını basit kod ile işleme konusunda EPPlus'tan çok daha fazla özellik sunar. IronXL hakkında daha fazla eğitimi görmek için lütfen aşağıdaki bağlantıyı ziyaret edin.
Sıkça Sorulan Sorular
C#'ta Excel verisini DataTable'a nasil okuyabilirim?
IronXL'i kullanarak WorkBook.Load() ile Excel calisma kitabini yukleyerek, calisma sayfasina ulasip veriyi dönüştürmek için ToDataTable() kullanarak Excel verisini bir DataTable'a okuyabilirsiniz.
IronXL kullanmanın Excel manipülasyonu için avantajları nelerdir?
IronXL, Excel dosyalarının manipülasyonunu basitleştiren basit ve sezgisel bir API sunar. Veri çıkartma, hesaplamalar, grafik oluşturma ve rapor hazırlama gibi özellikleri içeren kapsamlı bir çözüm sunar.
IronXL, .xls ve .xlsx dosya formatlarını destekliyor mu?
Evet, IronXL hem .xls hem de .xlsx dosya formatlarını destekler, böylece farklı türde Excel dosyalarıyla çalışırken esneklik sağlar.
IronXL'i, Microsoft Office yüklü olmadan kullanabilir miyim?
Evet, IronXL, makinenizde Microsoft Office veya Excel yüklü olmasını gerektirmeden Excel dosyalarını manipüle etmek için kullanılabilir.
Bir .NET projesine IronXL nasıl kurarım?
IronXL'i kurmak için, .NET projenizde NuGet Paket Yöneticisi'ni açın, 'IronXL' arayın ve paketi yükleyin. Bu, projenize IronXL'i ekleyecek ve özelliklerini kullanmaya başlamanızı sağlayacaktır.
Excel dosyalarını bir DataTable'a okurken karşılaşılan yaygın sorunlar nelerdir ve bunlar nasıl giderilir?
Yaygın sorunlar arasında yanlış dosya yolları, desteklenmeyen formatlar veya yanlış biçimlendirilmiş veriler bulunur. Dosya yolunun doğru olduğundan, formatın desteklendiğinden ve verinin temiz olduğundan emin olun. IronXL, bu sorunları gidermenize yardımcı olacak net hata mesajları sağlar.
IronXL, bir Excel dosyasını bir DataTable'a okumak için EPPlus ile nasıl karşılaştırılır?
IronXL, kullanım kolaylığı ve kapsamlı özellikleri ile dikkat çekerken, EPPlus da etkili olabilir ancak uygulamak 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ı verimli bir şekilde işlemek için tasarlanmıştır ve dosya manipülasyonu sırasında performansı ve bellek kullanımını optimize eden özellikler sunar.
IronXL veri analizi ve raporlama için kullanılabilir mi?
Kesinlikle, IronXL, veri analizi ve raporlama için uygun olup, veri çıkartma ve manipülasyon, grafik oluşturma ve rapor hazırlama için güçlü özellikler sunar.
IronXL'in geliştiricilere sağladığı ana faydalar nelerdir?
IronXL'in başlıca özellikleri, sorunsuz veri çıkartma, güçlü hesaplama yetenekleri, kolay grafik oluşturma, verimli rapor hazırlama ve geniş Excel dosya formatı desteğini içerir.




