IronXL ile CsvHelper Arasındaki Bir Karşılaştırma
CSV dosyaları ile çalışmak zor bir görev olabilir. Bugün birçok kütüphane, geliştiricilerin bu görevi Microsoft Excel kurulmadan gerçekleştirmesine yardımcı olmak için mevcuttur.
Bu makalede, sürüm 4.5.3 veya daha eski (son ücretsiz sürüm) veya mevcut EPPlus ticari lisansları ile çalışma konusundaki karşılaştırmayı ve tartışmayı ele alacağız, bunlar arasında uygulamalı olarak nasıl çalışılır.
Öncelik olarak her iki kütüphanenin sunduğu olanakları inceleyelim.
IronXL Kütüphanesi
IronXL, Microsoft Excel belgelerini C# ile okuma ve düzenleme işlevini kolaylaştıran bir .NET kütüphanesidir. IronXL.Excel, çeşitli elektronik tablo formatlarını okumak için bağımsız bir .NET yazılım kütüphanesidir. Microsoft Excel kurulumu gerektirmez, ayrıca Interop'una bağımlılığı yoktur. CSV dosyaları ile son derece sorunsuz çalışır.
IronXL, .NET içinde Excel tablosu dosyalarını okuma, düzenleme ve oluşturma işlemlerini yıldırım hızında performans ile gerçekleştiren sezgisel bir C# API'sidir. IronXL, .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS ve Azure'u tamamen destekler.
IronXL, C# için öncü bir .NET core ve .NET framework Excel elektronik tablo kütüphanesidir.
IronXL Özellik Seti
- XLS/XLSX/CSV/TSV'den veri yükleme, okuma ve düzenleme
- Kaydetme ve dışa aktarma — XLS/XLSX/CSV/TSV/JSON'a
- Aralıklar — kullanımı kolay
WorkSheet["A1:B10"]sözdizimi. Aralıkları kolaylıkla birleştirin ve oluşturun. - Sıralama — aralıklar, sütunlar ve satırları sıralayın.
- Stil — hücre görsel stilleri, yazı tipi, boyut, arka plan deseni, kenarlık, hizalama ve sayı formatları.
CsvHelper
CSV dosyalarını okumak ve yazmak için bir .NET kütüphanesi. Son derece hızlı, esnek ve kullanımı kolay. Özel sınıf nesnelerinin okunmasını ve yazılmasını destekler. Tüm örnek kodlar CsvHelper dokümantasyonunda paket dahilinde bulunmaktadır.
CsvHelper'ı C#'ta nasıl kullanılacağını
- CSV dosyalarını okumak için CsvHelper C# kütüphanesi kurun
CsvConfigurationsınıfını kullanarak CSV için konfigürasyonu ayarlamak- Dosyayı C# yerleşik
StreamReaderile açın - Input the instances made in steps 2 & 3 to
CsvReaderclass to read - CsvHelper
DefaultTypeConvertersınıfını miras alarak CSV'deki verileri dönüştürün
CsvHelper Özellikleri
- Hızlı: son derece hızlı performans için kuvvetli sınıflar derler
- Esnek: yazarken muhafazakâr, okurken liberal
- Kullanımı kolay: Okuma ve yazma,
GetRecords<t>()veWriteRecords(records)kadar basittir. - Yüksek derecede yapılandırılabilir
- Linux modu
- Düşük bellek kullanımı
1. Konsol Uygulaması Oluşturun
Konsol Uygulaması oluşturmak için şu adımları kullanın:
- Visual Studio 2022 IDE'yi başlatın.
- "Yeni proje oluştur" üzerine tıklayın.
- "Yeni proje oluştur" sayfasında, dil açılır listesinde C# seçin, Platformlar listesinden Windows ve Proje türleri listesinden Konsol seçin.
- Gösterilen proje şablonlarından Console App (.NET Framework) seçin.
Proje Oluştur - Konsol Uygulaması
- İleri tıklayın.
- Ek Bilgi ekranında kullanmak istediğiniz Çerçeve sürümünü belirtin. Bu örnekte, .NET Framework 4.8 kullanacağız.
Proje Oluştur - .NET Framework
- Süreci tamamlamak için Oluşturu tıklayın.
Proje şimdi oluşturuldu ve kütüphaneleri test etmeye neredeyse hazırız. Ancak, hâlâ bunları yüklememiz ve projeye entegre etmemiz gerekiyor. Önce IronXL'i yükleyelim.
2. IronXL C# Kütüphanesi Kurulumu
IronXL kütüphanesini şu yöntemlerle indirip kurabilirsiniz:
- NuGet paketleri ile Visual Studio'yu kullanarak
- NuGet Paketini doğrudan indirin
- DLL ile Manuel Kurulum
Her birine daha yakından bakalım.
2.1. NuGet paketleriyle Visual Studio Kullanarak
Visual Studio, projelerinizde NuGet paketlerini yüklemek için NuGet Paket Yöneticisi sağlar. Buna Proje Menüsü aracılığıyla veya Çözüm Gezgini'nde projenize sağ tıklayabilirsiniz.
Paket-Yönet-NuGet-Paketi
- Şimdi, arama sekmesinden -> IronXL.Excel'i arayın -> Kur
IronXL'i ara
- Tamamladık.
2.2. NuGet Paketini Doğrudan İndir
Bu, NuGet sitesine doğrudan gidip paketi indirerek yapılabilir. Adımlar şunlardır:
- https://www.nuget.org/packages/IronXL.Excel adresine gidin
- "Paket İndir"i seçin
- İndirilen paketi çift tıklayın
- Paket yüklenecek
- Visual Studio projenizi yeniden yükleyin ve kullanmaya başlayın
2.3. DLL ile Manuel Kurulum
IronXL C# Kütüphanesini indirip kurmanın bir başka yolu da, Geliştirici Komut İstemi aracılığıyla IronXL NuGet paketini kurmak için aşağıdaki adımları kullanmaktır.
- Geliştirici Komut İstemini açın — genellikle Visual Studio klasöründe bulunur.
- Aşağıdaki komutu yazın:
PM> Install-Package IronXL.Excel - Enter'a basın
- Bu, paketi indirecek ve kuracaktır
- Visual Studio projenizi yeniden yükleyin ve kullanmaya başlayın
2.4. Gerekli Using Direktiflerini Ekleyin
- Çözüm Gezgini'nde Program.cs dosyasını sağ tıklayın ve ardından Kodu Görüntüle'yi tıklayın.
- Kodu dosyasının üstüne aşağıdaki using direktiflerini ekleyin:
using IronXL;
using IronXL;
Imports IronXL
Hepsi tamam! IronXL indirildi, kuruldu ve kullanıma hazır. Ancak, bundan önce CsvHelper'ı kurmalıyız.
3. CsvHelper Kurulumu
3.1. NuGet Paket Yöneticisi Konsolunu Kullanarak
CsvHelper C# Kütüphanesini indirmek ve kurmak için, NuGet paketini Geliştirici Komut İsteminden yüklemek için aşağıdaki adımları kullanın.
- Geliştirici Komut İstemini açın — genellikle Visual Studio klasöründe bulunur.
- Aşağıdaki komutu yazın:
PM> Install-Package CsvHelper -Version 27.2.1 - Enter'a basın
- Bu, paketi indirecek ve kuracaktır
- Visual Studio projenizi yeniden yükleyin ve kullanmaya başlayın
3.2. Doğrudan İndirme
NuGet web sitesinden indir: https://www.nuget.org/packages/CsvHelper.
4. IronXL Kullanarak CSV Dosyaları ile Çalışma
Virgülle ayrılmış değerler (CSV) dosyası, değerleri ayırmak için virgül kullanan sınırlı bir metin dosyasıdır. Dosyanın her satırı bir veri kaydıdır. Bu dosyalarla hesaplama yapmak oldukça zor bir görev olabilir ve IronXL, bunu Microsoft Excel olmadan yapmanın çok iyi ve kolay bir seçeneğini sunar. Öncelikle bir CSV dosyasını normal bir Excel dosyasına dönüştürelim.
4.1. Bir CSV Dosyasını Excel Formatına Dönüştürme
Süreç oldukça basit ve kolaydır. Genellikle bir satır kod ile yapılır.
CSV'den Excel formatlarına:
// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;
// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;
// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load the CSV file and convert it to an Excel format
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
' Access the default worksheet
Dim ws As WorkSheet = workbook.DefaultWorkSheet
' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")
4.2. Dönüştürülmüş CSV Dosyalarını IronXL Kullanarak Okuma ve İşleme
IronXL WorkBook sınıfı bir Excel sayfasını temsil eder. C# kullanarak bir Excel Dosyasını açmak için, WorkBook.Load kullanırız ve Excel dosyasının (.xlsx) yolunu belirtiriz. Dosyayı okumak için kullanıldığı basit bir satırlık kod aşağıdadır:
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx");
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx");
' Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets/sample.xlsx")
Her WorkBook birden fazla WorkSheet nesnesi içerebilir. Bunlar, Excel belgesindeki çalışma sayfalarını temsil eder. Çalışma kitabı çalışma sayfaları içeriyorsa, onları şu şekilde adlarına göre alabilirsiniz:
// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open the sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
Hücre değerlerini okuma kodu:
// Read from ranges of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from ranges of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from ranges of cells elegantly
For Each cell In worksheet("A2:A10")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
Çalışma kitabını ve çalışma sayfasını yükledikten ve okuduktan sonra, aşağıdaki kod örneği, formülleri değiştirmek veya belirli hücrelere uygulamak için kullanılabilir. Kod şöyle devam ediyor:
// Set formulas in specific cells
worksheet["A1"].Formula = "SUM(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "MAX(C3:C7)";
// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
// Set formulas in specific cells
worksheet["A1"].Formula = "SUM(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "MAX(C3:C7)";
// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
' Set formulas in specific cells
worksheet("A1").Formula = "SUM(B8:C12)"
worksheet("B8").Formula = "=C9/C11"
worksheet("G30").Formula = "MAX(C3:C7)"
' Force recalculate all formula values in all sheets
workbook.EvaluateAll()
4.3. Excel belgesini tekrar CSV Dosyasına Kaydetme
IronXL ile CSV dosyaları yazmak kolay bir süreçtir. Aşağıdaki kod, Excel dosyasını SaveAsCsv yöntemi kullanarak CSV formatında basitçe kaydeder.
// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
' Load the Excel Workbook
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
' Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
' This will save as "SaveAsCSV.Sheet1.csv"
5. CsvHelper Kullanarak CSV Dosyaları ile Çalışma
CSV dosyalarını okumak, aslında göründüğünden çok daha zor bir görevdir. CsvHelper kütüphanesi, tür güvenli, hızlı ve esnek kod yazmayı kolaylaştırır.
5.1. CsvHelper ile CSV Dosyalarını Okuma
Bu örnek CSV dosyası, üç metin sütunu ve bir sayı sütunu içerir.
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
Her satırı Person tipinde bir nesneye eşleyeceğiz.
// Define the Person class to map CSV records
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public string IsActive { get; set; }
}
// Define the Person class to map CSV records
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public string IsActive { get; set; }
}
' Define the Person class to map CSV records
Public Class Person
Public Property FirstName() As String
Public Property LastName() As String
Public Property Age() As Integer?
Public Property IsActive() As String
End Class
CSV dosyamızı okumak için kod aşağıdadır.
// Define the path to the CSV file
var fileName = @"<path to our CSV file>";
// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Encoding = Encoding.UTF8,
Delimiter = ","
};
// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var textReader = new StreamReader(fs, Encoding.UTF8))
using (var csv = new CsvReader(textReader, configuration))
{
var data = csv.GetRecords<Person>();
// Iterate over each person record
foreach (var person in data)
{
// Process each Person object
}
}
}
// Define the path to the CSV file
var fileName = @"<path to our CSV file>";
// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Encoding = Encoding.UTF8,
Delimiter = ","
};
// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var textReader = new StreamReader(fs, Encoding.UTF8))
using (var csv = new CsvReader(textReader, configuration))
{
var data = csv.GetRecords<Person>();
// Iterate over each person record
foreach (var person in data)
{
// Process each Person object
}
}
}
' Define the path to the CSV file
Dim fileName = "<path to our CSV file>"
' Configure CsvHelper
Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With {
.Encoding = Encoding.UTF8,
.Delimiter = ","
}
' Read CSV file
Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)
Using textReader = New StreamReader(fs, Encoding.UTF8)
Using csv = New CsvReader(textReader, configuration)
Dim data = csv.GetRecords(Of Person)()
' Iterate over each person record
For Each person In data
' Process each Person object
Next person
End Using
End Using
End Using
data türü IEnumerable<Person>'dir. CsvHelper, her sütunu aynı isimdeki özelliğe otomatik olarak eşleyecektir. Örneğin, FirstName sütunundaki değer Person.FirstName içine eşlenecektir. Daha sonra data üzerinde yineleme yapabiliriz ve her satırdaki değerlere erişebiliriz.
5.2. CSV Dosyalarında Veriyi Bir Türden Diğerine Dönüştürme
CSV dosyaları çoğunlukla metin verisi içerir. Örneğin, yaş sütunu bir tam sayı değeridir ve CSV dosyası sadece metin içerir. CsvHelper, verileri dizelerden standart .NET türlerine (Boolean, Int32, Int64, Enum) dönüştürebilir. Bizim durumumuzda, yalnızca True/False'a sahip olabilen ve standart dışı değerler içeren bir IsActive bool veri türümüz var. Özel bir dönüştürücü oluşturarak dönüştürülebilir. Kod stilizasyonu şu şekilde gider:
// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
{
// Convert "Yes" to true and anything else to false
return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
}
}
// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
{
// Convert "Yes" to true and anything else to false
return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
}
}
' Custom Boolean Converter for CsvHelper
Public Class CustomBooleanConverter
Inherits DefaultTypeConverter
Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object
' Convert "Yes" to true and anything else to false
Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase)
End Function
End Class
Her ne kadar bool standart bir .NET türü olsa da, varsayılan dönüştürücü yalnızca True/False değeri ile başa çıkabilir, oysa CSV dosyamızda Yes/No bulunur. Burada, DefaultTypeConverter'ü alt sınıf yapmamız ve ardından ConvertFromString yöntemini geçersiz kılmamız gerekiyor.
6. Lisanslama
IronXL, C# Excel kütüphanesi olan açık ticari bir üründür. Geliştirme için ücretsiz olup, ticari dağıtım için her zaman lisanslanabilir. Tek proje kullanımı, tek geliştiriciler, ajanslar ve küresel şirketler için lisanslar mevcuttur, ayrıca SaaS ve OEM dağıtımı için de geçerli. Tüm lisanslar, 30 günlük para iade garantisi, bir yıllık ürün desteği ve güncellemeleri, geliştirici/staging/üretim için geçerliliği ve ayrıca kalıcı bir lisans (tek seferlik satın alma) içerir. Lite paketi $999 ile başlar.
CsvHelper — CSV dosyalarını okuma ve yazma, ticari kullanım için tamamen ücretsizdir.
7. Özet ve Sonuç
Özet
IronXL, bir Excel dosyasını işlemek için gereken her şeyi sağlayan kapsamlı bir kütüphanedir. Kullanımı kolaydır ve çeşitli formatları XLSX'ye, ve XLSX'den diğer formatlara, örneğin CSV'ye dönüştürme olanağı sağlar. Bu dönüşüm, kullanıcıya çeşitli dosya formatlarıyla kolayca çalışabilme esnekliği sunar.
Öte yandan, CsvHelper yalnızca CSV dosya formatlarıyla çalışmak üzere tasarlandığından, yalnızca CSV dosyalarıyla ilgilenebilir. Tüm kod örnekleri CsvHelper dökümantasyon dosyalarında bulunabilir. Dökümantasyon, CsvHelper'ı projenizde nasıl kullanacağınıza dair yönergeler verir.
Sonuç
IronXL, birden fazla formatla çalışma desteği sunduğundan CsvHelper'a göre açık bir avantaja sahiptir. Dahası, formülleri ve stilleri istediğiniz şekilde uygulayabilirken, CsvHelper yalnızca sınırlı seçeneklerle CSV dosyalarını okumayı ve yazmayı sağlar. Ayrıca, mevcut bir CSV dosyasına yeni kayıtlar ekleyemezsiniz, çünkü bu yalnızca önceki girişlerin üzerine yazılır.
Sıkça Sorulan Sorular
C# kullanarak Excel dosyalarını farklı formatlara nasıl dönüştürebilirim?
IronXL kullanarak, Excel dosyalarını XLS, XLSX, CSV ve TSV gibi çeşitli formatlara dönüştürebilirsiniz. Dosyayı IronXL ile yükleyerek ve çok yönlü dışa aktarma seçenekleri ile istediğiniz formatta kaydederek bunu yapabilirsiniz.
Excel dosya manipülasyonu için IronXL kullanmanın CsvHelper'a göre faydaları nelerdir?
IronXL, XLS, XLSX ve CSV gibi birden fazla Excel formatıyla çalışma için kapsamlı işlevsellik sunar. Veri manipülasyonu, stil verme ve formül uygulama gibi özellikleri destekler, bu da kapsamlı Excel dosya işleme gerektiren projeler için idealdir. Buna karşılık, CsvHelper spesifik olarak hızlı ve verimli CSV dosya işlemleri için tasarlanmıştır.
Bir C# projesi için IronXL nasıl kurulur?
Visual Studio'da 'IronXL' aratması yaparak NuGet Paket Yöneticisi aracılığıyla IronXL yükleyebilirsiniz. Alternatif olarak, NuGet paketini doğrudan indirip DLL'i projenize referans ederek manuel olarak yükleyebilirsiniz.
IronXL, Microsoft Excel kurulu olmadan kullanılabilir mi?
Evet, IronXL sisteminizde Microsoft Excel'in kurulu olmasını gerektirmez. Çeşitli formatlarda Excel dosyalarını bağımsız olarak okumak, düzenlemek ve oluşturmak için çalışır.
CsvHelper kullanarak CSV dosyalarını nasıl okur ve yazarım?
CsvHelper, bir sınıf tanımlayarak CSV kayıtlarını eşleme, CsvHelper ayarlarını yapılandırma ve CSV dosya işlemlerini kolayca gerçekleştirmek için CsvReader ve CsvWriter kullanma olanağı tanır.
CsvHelper'ın CSV dosyalarını işlemek için popüler bir seçim olmasının sebebi nedir?
CsvHelper hızı, esnekliği ve kullanım kolaylığı ile bilinir. Özelleştirilmiş sınıf nesnelerini ve tür dönüşümlerini destekler, bu da onu yalnızca CSV veri işlemesine odaklanan projeler için tercih edilen bir seçim yapar.
IronXL kullanımı için lisans gereksinimi var mı?
Evet, IronXL'nin ticari bir ortamda konuşlandırılması ücretli bir lisans gerektirir. Bu, ticari kullanım için ücretsiz olan CsvHelper ile zıttır.
IronXL'den en çok hangi tür projeler faydalanır?
Çeşitli Excel dosya formatlarının yoğun bir şekilde işlenmesini gerektiren projeler, stil, veri sıralama ve formül hesaplama gibi özellikleri içeren, robust özellik seti nedeniyle IronXL kullanarak en çok faydayı elde eder.




