IronXL ile CsvHelper Arasındaki Bir Karşılaştırma
CSV dosyalarıyla çalışmak zorlu bir görev olabilir. Bugün, geliştiricilere bu görevi gerçekleştirmelerine yardımcı olacak birçok kütüphane var, Microsoft Excel'in yüklü olmasına gerek kalmadan.
Bu makalede, C# .NET Teknolojilerinde Microsoft Excel belgeleriyle programatik olarak çalışmanın, CSV formatında veya standart XLSX formatında nasıl yapılacağını tartışacak ve karşılaştıracağız, en popüler iki kütüphane olan IronXL ve CsvHelper'ı kullanarak.
Öncelikle her iki kütüphanenin de neler sunduğuna bir göz atalım.
IronXL Kütüphanesi
IronXL, C# ile Microsoft Excel belgelerini okumayı ve düzenlemeyi kolaylaştıran bir .NET kütüphanesidir. IronXl.Excel, çok çeşitli elektronik tablo formatlarını okumak için bağımsız bir .NET yazılım kütüphanesidir. Microsoft Excel yüklü olmasını gerektirmez, ne de Interop'a bağımlıdır. CSV dosyalarıyla çok iyi çalışır.
IronXL, .NET içinde Excel elektronik tablo dosyalarını okumak, düzenlemek ve oluşturmak için şimşek hızıyla performans sağlayan sezgisel bir C# API'sidir. IronXL, .NET Core, .NET Framework, Xamarin, Mobil, Linux, macOS ve Azure'u tam olarak destekler.
IronXL, C# için önde gelen bir .NET core ve .NET framework Excel elektronik tablo kütüphanesidir.
IronXL Özellik Seti
- Yükleme, okuma ve düzenleme — XLS/XLSX/CSV/TSV formatlarında
- Kaydetme ve dışa aktarma — XLS/XLSX/CSV/TSV/JSON formatlarına
- Aralıklar — kullanımı kolay
WorkSheet["A1:B10"]sözdizimi. Aralıkları sezgisel olarak birleştir ve oluştur. - Sıralama — aralıkları, sütunları ve satırları sıralayın.
- Stil — hücre görsel tarzlar, yazı tipi, boyut, arka plan deseni, kenarlık, hizalama ve sayı formatları.
CsvHelper
CSV dosyalarını okuma ve yazma için bir .NET kütüphanesi. Son derece hızlı, esnek ve kullanımı kolay. Özel sınıf nesnelerinin okuma ve yazmasını destekler. Tüm örnek kodlar, CsvHelper kütüphanesinin dökümantasyonunda mevcuttur.
C#'ta CsvHelper nasıl kullanılır
- CSV dosyalarını okumak için CsvHelper C# kütüphanesini yükleyin
CsvConfigurationsınıfını CSV için yapılandırmayı ayarlamak için kullanın.- Dosyayı C# yerleşik
StreamReaderile açın. - Input the instances made in steps 2 & 3 to
CsvReaderclass to read - CsvHelper
DefaultTypeConvertersınıfını kalıt alarak CSV'deki veriyi dönüştürün.
CsvHelper Özellikleri
- Hızlı: son derece hızlı performans için sınıfları derleme sırasında oluşturur.
- Esnek: yazarken dikkatli, okurken liberal.
- Kullanımı kolay: okuma ve yazma işlemleri
GetRecords<t>()veWriteRecords(records)kadar basittir. - Yüksek ayarlanabilir
- Linux modu
- Düşük bellek kullanımı
1. Bir Konsol Uygulaması Oluşturun
Bir Konsol Uygulaması oluşturmak için aşağıdaki adımları izleyin:
- Visual Studio 2022 IDE'sini başlatın.
- "Yeni proje oluştur" seçeneğine tıklayın.
- "Yeni proje oluştur" sayfasında, dil açılır penceresinde C#, Platformlar listesinden Windows ve "Proje türleri" listesinden Console seçin.
- Gösterilen proje şablonlarından Console App (.NET Framework) seçin.
Proje Oluştur - Konsol Uygulaması
- Sonraki seçeneğine tıklayın.
- Ek Bilgiler 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
- İşlemi tamamlamak için Oluştur seçeneğine tıklayın.
Proje şimdi oluşturuldu ve kütüphaneleri test etmeye neredeyse hazırız. Ancak, proje içine entegre etmeli ve yüklemeliyiz. Önce IronXL'i yükleyelim.
2. IronXL C# Kütüphanesi Kurulumu
IronXL kütüphanesini kullanarak indirebilir ve yükleyebilirsiniz:
- Visual Studio ile NuGet paketleri kullanarak
- NuGet Paketini doğrudan indirin
- DLL ile Manuel Yükleme
Her biri yakın bir şekilde inceleyelim.
2.1. Visual Studio ile NuGet paketlerini Kullanarak
Visual Studio projelerinize NuGet paketlerini yüklemek için NuGet Paket Yöneticisi sağlar. Ona Proje Menüsünden veya Çözüm Gezgini'nde projenize sağ tıklayarak ulaşabilirsiniz.
Seç-Yönet-NuGet-Paketi
- Şimdi, tarama sekmesinden -> IronXl.Excel'i arayın -> Yükleyin.
IronXL'i arayın
- Ve işimiz bitti.
2.2. NuGet Paketini Bir Başına İndirin
Bu, NuGet sitesini direkt ziyaret ederek ve paketi indirerek yapılabilir. Adımlar:
- https://www.nuget.org/packages/IronXl.Excel adresine gidin.
- "Paket İndir" seçin.
- İndirilen pakete çift tıklayın.
- Paket yüklenecektir.
- Visual Studio projenizi yeniden yükleyin ve kullanmaya başlayın.
2.3. DLL ile Manuel Yükleme
IronXL C# Kütüphanesini indirme ve yüklemenin bir diğer yolu da, IronXL NuGet paketini Geliştirici Komut İstemi aracılığıyla yüklemek 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 tuşuna basın.
- Bu, paketi indirip yükleyecektir.
- Visual Studio projenizi yeniden yükleyin ve kullanmaya başlayın.
2.4. Gerekli Using Yönergelerini Ekleyin
- Çözüm Gezgini'nde, Program.cs dosyasına sağ tıklayın ve ardından Kodu Görüntüle'yi seçin.
- Kod dosyasının üst kısmına aşağıdaki using yönergelerini ekleyin:
using IronXL;
using IronXL;
Imports IronXL
Hepsi tamam! IronXL indirildi, yüklendi ve kullanıma hazır. Ancak, bundan önce CsvHelper'ı yüklemeliyiz.
3. CsvHelper Kurulumu
3.1. NuGet Paket Yöneticisi Konsolu Kullanarak
CsvHelper C# Kütüphanesini indirip yüklemek için, Geliştirici Komut İstemini kullanarak NuGet paketi yüklemek için aşağıdaki adımları uygulayı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 tuşuna basın.
- Bu, paketi indirip yükleyecektir.
- Visual Studio projenizi yeniden yükleyin ve kullanmaya başlayın.
3.2. Doğrudan İndirme
NuGet web sitesinden indirin: https://www.nuget.org/packages/CsvHelper.
4. IronXL kullanarak CSV Dosyalarıyla Çalışma
Bir virgülle ayrılmış değerler (CSV) dosyası, değerleri ayırmak için bir virgül kullanan bir metin dosyasıdır. Dosyanın her satırı bir veri kaydıdır. Bu dosyaları hesaplama amacıyla manipüle etmek zorlu bir görev olabilir ve IronXL, bunu Microsoft Excel olmadan yapmak için oldukça iyi ve kolay bir seçenek 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 kodla 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. IronXL kullanarak Dönüştürülmüş CSV Dosyalarını Okuma ve Manipülasyon
IronXL WorkBook sınıfı bir Excel sayfasını temsil eder. C# ile Excel Dosyası açmak için WorkBook.Load kullanır ve Excel dosyasının (.xlsx) yolunu belirtiriz. Dosyayı okumak için açmak için kullanılan tek satırlık kod:
// 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çerdiğinde, bunları aşağıdaki gibi adlarıyla 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ükleyip okuduktan sonra, formüllerde değişiklik yapmak veya belirli hücrelere uygulamak için aşağıdaki kod örneği kullanılabilir. Kod şu şekildedir:
// 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 CSV Dosyasına geri kaydetme
CSV dosyalarını yazmak IronXL ile kolay bir süreçtir. Aşağıdaki kod, SaveAsCsv yöntemi kullanılarak Excel dosyasını 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ıyla Çalışma
CSV dosyalarını okumak, göründüklerinden daha kolay olan görevlerden biridir. CsvHelper kütüphanesi, tür olarak güvenli, hızlı ve esnek kod yazmayı kolaylaştırır.
5.1. CsvHelper ile CSV dosyalarını Okuma
Bu, örnek CSV dosyasıdır, üç metin sütunu ve bir numara sütunu vardır.
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
Her satırı Person türünde 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 otomatik olarak aynı adı taşıyan özelliğe eşleyecektir. Örneğin, FirstName sütunundaki değer Person.FirstName'ye eşlenecektir. Daha sonra data üzerinde yineleme yapabilir ve her satırdaki değerlere erişebiliriz.
5.2. CSV Dosyalarındaki Verileri Bir Türden Başka Bir Türe Çevirmek
CSV dosyaları çoğunlukla metin verileri içerir. Örneğin, yaş sütunu bir tam sayı değeri olup, CSV dosyası yalnızca metin içerir. CsvHelper, verileri dizgilerden standart .NET türlerine (Boolean, Int32, Int64, Enum) çevirebilir. Bizim durumumuzda, yalnızca True/False içeren ve standart olmayan değerler içeren IsActive bool veri türümüz bulunmaktadır. Özelleştirilmiş bir çevirici oluşturarak dönüştürülebilir. Kod stillendirmesi şu şekildedir:
// 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 çevirici yalnızca True/False değeri işleyebilirken, bizim CSV dosyasında Yes/No bulunmaktadır. Burada, DefaultTypeConverter sınıfını alt sınıf olarak türetmemiz ve ConvertFromString yöntemini geçersiz kılmamız gerekiyor.
6. Lisanslama
IronXL is an openly commercial C# Excel library. Geliştirme için ücretsizdir ve ticari dağıtım için her zaman lisanslanabilir. Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. Tüm lisanslar 30 günlük para iade garantisi, bir yıl ürün desteği ve güncellemeleri, geliştirme/sahnelenme/üretim için geçerlilik ve ayrıca kalıcı bir lisans (tek seferlik satın alma) içerir. Lite paketi $799'dan başlıyor.
CsvHelper — CSV dosyalarının okunması ve yazılması ticari kullanım için tamamen ücretsizdir.
7. Özet ve Sonuç
Özet
IronXL, bir Excel dosyasını değiştirebilmeniz için gereken her şeyi sunan eksiksiz bir kütüphanedir. Kullanımı kolaydır ve farklı formatları XLSX'e ve XLSX'den diğer formatlara, örneğin CSV'ye dönüştürme olanağı sağlar. Bu karşılıklı dönüşüm, kullanıcıya farklı dosya formatlarıyla kolayca çalışma esnekliği sunar.
Öte yandan, CsvHelper özellikle CSV dosya formatlarıyla çalışmak üzere tasarlanmıştır, yani yalnızca CSV dosyalarıyla çalışabilir. Tüm kod örnekleri CsvHelper dokümantasyon dosyalarında bulunabilir. Dokümantasyon, CsvHelper'ı projenizde nasıl kullanacağınıza dair yönergeler sağlar.
Sonuç
IronXL, birden çok formatla çalışmayı desteklediği için CsvHelper'a karşı net bir avantaja sahiptir. Ayrıca, tercihinize göre formüller ve stiller uygulayabilirken CsvHelper, yalnızca sınırlı seçeneklerle CSV dosyalarının okunmasına ve yazılmasına izin verir. Ayrıca, mevcut bir CSV dosyasına yeni kayıtlar ekleyemezsiniz, çünkü bu, önceki girdilerin üzerine yazar.
(CsvHelper, ilgili sahibinin tescilli markasıdır. Bu site CsvHelper ile ilişkili, desteklenmiş veya finanse edilmemektedir. Tüm ürün adları, logolar ve markalar kendi sahiplerinin mülkiyetindedir. Karşılaştırmalar yalnızca bilgilendirme amaçlıdır ve yazım sırasında kamuya açık bilgileri yansıtı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. Bu, IronXL ile dosyayı yükleyip, kapsamlı dışa aktarma seçeneklerini kullanarak istenen formatta kaydederek yapılabilir.
Excel dosya işleme için IronXL kullanmanın CsvHelper'a göre avantajları nelerdir?
IronXL, XLS, XLSX ve CSV gibi birden çok Excel formatı ile çalışmak için kapsamlı işlevsellik sunar. Veri işleme, stil düzenleme ve formül uygulama gibi özellikleri destekler, bu da kapsamlı Excel dosya işleme gerektiren projeler için idealdir. Buna karşın, CsvHelper özellikle hızlı ve verimli CSV dosya işlemleri için tasarlanmıştır.
Bir C# projesi için IronXL nasıl yüklenir?
IronXL'yi Visual Studio'da NuGet Package Manager üzerinden 'IronXL' aratarak yükleyebilirsiniz. Alternatif olarak, NuGet paketini doğrudan indirebilir veya DLL'yi projenizde kullanarak manuel olarak yükleyebilirsiniz.
IronXL, Microsoft Excel kurulu olmadan kullanılabilir mi?
Evet, IronXL sisteminizde Microsoft Excel'in yüklü olmasını gerektirmez. Çeşitli formatlarda Excel dosyalarını okuma, düzenleme ve oluşturma işlevlerini bağımsız olarak yerine getirir.
CsvHelper kullanarak CSV dosyalarını nasıl okuyup yazabilirim?
CsvHelper, CSV kayıtlarını eşlemek için bir sınıf tanımlamanıza, CsvHelper ayarlarını yapılandırmanıza ve CSV dosya işlemlerini kolayca yönetmek için CsvReader ve CsvWriter kullanmanıza olanak tanır.
CsvHelper, CSV dosyalarını işlemek için neden popüler bir seçimdir?
CsvHelper hız, esneklik ve kullanım kolaylığı ile bilinir. Özel sınıf nesnelerini ve tür dönüşümlerini destekler, bu da yalnızca CSV veri işlemi odaklı projeler için tercih edilen bir seçenek haline getirir.
IronXL kullanmak için lisans gereksinimi var mı?
Evet, IronXL'i ticari bir ortamda kullanmak için ücretli bir lisans gereklidir. Bu, ticari kullanım için ücretsiz olan CsvHelper ile tezat oluşturur.
Hangi tür projeler IronXL'den en çok fayda sağlar?
Çeşitli Excel dosya formatlarının kapsamlı bir şekilde işlenmesini gerektiren, stil düzenleme, veri sıralama ve formül hesaplamaları gibi özellikler içeren projeler, sağlam özellik seti nedeniyle IronXL'den en çok fayda sağlar.




