IronXL Kullanarak C# Dilinde CSV Dosyalarını Nasıl Okunur
C# .NET'te CSV dosyalarını okumak, IronXL ile son derece kolay hale gelir -- virgülle ayrılmış veriyi yapısal bir çalışma kitabına yüklemek için tek bir metot çağrısı kullanarak herhangi bir özel ayrıştırma kodu gerekmez. Bu kılavuz, ihtiyacınız olan tüm teknikleri anlatır: temel yükleme, özel ayırıcılar, DataTable dönüşümü, hücre düzeyinde erişim, hata yönetimi ve Excel formatına dışa aktarma.
.NET'te CSV Dosyalarını Okumanın En Kolay Yolu Nedir?
En basit yaklaşım, CSV verilerini doğrudan bir çalışma kitabı yapısına aktarmak için WorkBook.LoadCSV yöntemini kullanmaktır. Bu tek bir yöntem, ayrıştırmayı, ayırıcı algılamayı ve veri organizasyonunu otomatik olarak yönetir -- StreamReader oluşturmaya veya her dize satırını manuel olarak işlemeye gerek yoktur.
IronXL'i Visual Studio'daki NuGet Paket Yöneticisi Konsolu üzerinden yükleyin. .NET projenizi açın ve çalıştırın:
Install-Package IronXL.Excel

using IronXL;
// Load CSV file into a workbook with one method call
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Display all rows and CSV columns
foreach (var row in sheet.Rows)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
using IronXL;
// Load CSV file into a workbook with one method call
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Display all rows and CSV columns
foreach (var row in sheet.Rows)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
Imports IronXL
' Load CSV file into a workbook with one method call
Dim workbook As WorkBook = WorkBook.LoadCSV("sales_data.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=",")
' Access the default worksheet containing CSV data
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Display all rows and CSV columns
For Each row In sheet.Rows
For Each cell In row
Console.Write(cell.Value & vbTab)
Next
Console.WriteLine()
Next
Giriş

Çıktı

LoadCSV yöntemi üç parametre kabul eder: dosya yolu, dahili temsil için hedef Excel formatı ve değerleri ayıran ayırıcı karakter. Yüklendikten sonra, CSV içeriği, tüm ithal edilen kayıtları içeren birincil çalışma sayfasını sağlayan DefaultWorkSheet özelliği aracılığıyla erişilebilir olur.
İç içe döngü yapısı, çalışma sayfasındaki her Row için ve ardından o satır içindeki her Cell için yineleme yapar. Value özelliği hücre içeriğini bir nesne olarak döndürürken, sekme karakteri konsol çıktısında okunabilir sütun ayırımı oluşturur. Bu desen, kaynak dosyanın 10 satır içerip içermediği veya binlerce kayıttan oluşan büyük CSV dosyaları için aynıdır.
IronXL, Microsoft Office kurulumu gerektirmeyen .NET Framework, .NET Core ve .NET 5+ arasında çalışır -- bu, ASP.NET Core ve .NET Core Web API projeleri için idealdir. Kütüphane NuGet üzerinde mevcuttur ve herhangi bir proje türüne sorunsuz bir şekilde entegre olur. Bir kütüphanenin sizin için neyi işlediğini anlamayı tercih ederseniz, bir sonraki bölüm manuel ayrıştırmanın neler gerektirdiğini kapsamaktadır.
Manuel CSV Ayrıştırması, Bir Kütüphane Kullanmaya Göre Nasıl Karşılaştırılır?
IronXL'in ortadan kaldırdığı karmaşıklığı anlamak, değerini daha net hale getirir. Manuel CSV ayrıştırması, basit görünen ancak herhangi bir projede hızla sorunlu hale gelebilen çeşitli uç durumları yönetmeyi gerektirir.
using System.IO;
// Manual approach -- requires extensive code for basic functionality
string path = "data.csv";
string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
// This breaks when CSV fields contain commas inside quotes
string[] fields = line.Split(',');
foreach (string field in fields)
{
Console.Write(field.Trim() + "\t");
}
Console.WriteLine();
}
using System.IO;
// Manual approach -- requires extensive code for basic functionality
string path = "data.csv";
string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
// This breaks when CSV fields contain commas inside quotes
string[] fields = line.Split(',');
foreach (string field in fields)
{
Console.Write(field.Trim() + "\t");
}
Console.WriteLine();
}
Imports System.IO
' Manual approach -- requires extensive code for basic functionality
Dim path As String = "data.csv"
Dim lines As String() = File.ReadAllLines(path)
For Each line As String In lines
' This breaks when CSV fields contain commas inside quotes
Dim fields As String() = line.Split(","c)
For Each field As String In fields
Console.Write(field.Trim() & vbTab)
Next
Console.WriteLine()
Next
Giriş

Çıktı

Manuel yaklaşım, CSV alanları iç içe virgüller içerdiğinde başarısız olur -- adres alanları veya açıklamalar gibi yaygın bir senaryodur. Dosyaları düzgün bir şekilde okumak, tırnaklı alanlar, kaçış tırnakları, çok satırlı değerler ve değişen kodlamaların yönetilmesini gerektirir. Kendi ayrıştırıcınızı oluşturmak, bir StreamReader yaratma, durum makinesi mantığı uygulama ve tüm okuma sürecini kendiniz yönetme anlamına gelir. Bu, bir satırlık bir görev için oldukça fazla bir başlangıç çerçevesidir.
IronXL alternatifi, tüm uç durumları otomatik olarak işleyerek:
using IronXL;
// IronXL approach -- handles all edge cases automatically
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
var records = workbook.DefaultWorkSheet.Rows;
foreach (var row in records)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
using IronXL;
// IronXL approach -- handles all edge cases automatically
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
var records = workbook.DefaultWorkSheet.Rows;
foreach (var row in records)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
Imports IronXL
' IronXL approach -- handles all edge cases automatically
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=",")
Dim records = workbook.DefaultWorkSheet.Rows
For Each row In records
For Each cell In row
Console.Write(cell.Value & vbTab)
Next
Console.WriteLine()
Next
WorkBook sınıfı, ayrıştırma karmaşıklığını dahili olarak yönetir, böylece verilerle çalışma konusuna odaklanmanıza olanak tanır. IronXL'in tam yetenekleri hakkında daha fazla bilgi IronXL özellikleri genel bakışında bulabilirsiniz.
Farklı CSV Ayraçları Nasıl Yönetilir?
CSV dosyaları her zaman ayırıcı olarak virgülleri kullanmaz. Avrupa sistemi, virgüller ondalık sayılarda yer aldığında sık sık noktalı virgüller kullanır. Sekme ile ayrılmış değerler (TSV) ve boru ile ayrılmış dosyalar, çeşitli uygulamalar ve eski sistemlerden veri çıkarmalarında düzenli olarak ortaya çıkar.
using IronXL;
// Reading a semicolon-delimited file (common in European exports)
WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";");
// Reading a tab-separated file
WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t");
// Reading a pipe-delimited file
WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|");
// Access data identically regardless of original delimiter
WorkSheet sheet = euroData.DefaultWorkSheet;
int rowsCount = sheet.RowCount;
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns");
using IronXL;
// Reading a semicolon-delimited file (common in European exports)
WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";");
// Reading a tab-separated file
WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t");
// Reading a pipe-delimited file
WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|");
// Access data identically regardless of original delimiter
WorkSheet sheet = euroData.DefaultWorkSheet;
int rowsCount = sheet.RowCount;
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns");
Imports IronXL
' Reading a semicolon-delimited file (common in European exports)
Dim euroData As WorkBook = WorkBook.LoadCSV("german_report.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=";")
' Reading a tab-separated file
Dim tsvData As WorkBook = WorkBook.LoadCSV("exported_data.tsv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=vbTab)
' Reading a pipe-delimited file
Dim pipeData As WorkBook = WorkBook.LoadCSV("legacy_system.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:="|")
' Access data identically regardless of original delimiter
Dim sheet As WorkSheet = euroData.DefaultWorkSheet
Dim rowsCount As Integer = sheet.RowCount
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns")
LoadCSV içindeki listDelimiter parametresi, alan ayırıcısı olarak herhangi bir tek karakter veya kaçış dizisini kabul eder. Sekme karakterleri \t kaçış dizisini kullanır. Yüklemeden sonra, veri yapısı orijinal format ne olursa olsun tutarlı kalır, birçok kaynaktan gelen ve değişen ayırıcılarla CSV dosyalarını işlemeyi kolaylaştırır. Çoğu CSV dosyası için varsayılan değer bir virgüldür, ancak bu esneklik, bir projenin karşılaştığı her türlü varyasyonu işleme kapasitesine sahiptir.
Giriş

Çıktı

RowCount ve ColumnCount özellikleri, dosyanın doğru yüklendiğini hızlı şekilde doğrulama sağlar -- özellikle ASP.NET Core uygulamasında kullanıcı yüklemelerini doğrularken veya tanıdık olmayan veri kaynaklarıyla çalışırken faydalıdır.
Kodlama Hususları
Fransızca veya Almanca verilerdeki aksanlı harfler gibi ASCII olmayan karakterlere sahip dosyaları okurken, IronXL kodlamayı otomatik olarak dosyanın bayt sırası işaretlemesinden (BOM) okur. BOM içermeyen dosyalar için, kaynaktaki kodlamayı doğrulamanız gerekebilir. Microsoft'un dosya kodlama dokümantasyonu, .NET'teki kodlama türleri için kapsamlı bir referans sağlar.
CSV'yi DataTable'ye Dönüştürmenin En İyi Yöntemleri Nelerdir?
CSV verilerini bir DataTable'ye dönüştürmek, veritabanı işlemleriyle entegrasyona, UI uygulamalarında veri bağlama ve LINQ sorgularına olanak tanır. ToDataTable metodu bu dönüşümü tek bir çağrıyla gerçekleştirir.
using IronXL;
using System.Data;
// Load CSV and convert to DataTable
WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable -- true parameter uses CSV header as column names
DataTable dataTable = sheet.ToDataTable(true);
// DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:");
foreach (DataColumn column in dataTable.Columns)
{
// Property names from CSV header become column names
Console.WriteLine($" - {column.ColumnName}");
}
Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}");
// Access data using standard DataTable syntax
foreach (DataRow row in dataTable.Rows)
{
// Access by column index or name attribute
string name = row["Name"].ToString();
string email = row["Email"].ToString();
Console.WriteLine($"Customer: {name}, Email: {email}");
}
using IronXL;
using System.Data;
// Load CSV and convert to DataTable
WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable -- true parameter uses CSV header as column names
DataTable dataTable = sheet.ToDataTable(true);
// DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:");
foreach (DataColumn column in dataTable.Columns)
{
// Property names from CSV header become column names
Console.WriteLine($" - {column.ColumnName}");
}
Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}");
// Access data using standard DataTable syntax
foreach (DataRow row in dataTable.Rows)
{
// Access by column index or name attribute
string name = row["Name"].ToString();
string email = row["Email"].ToString();
Console.WriteLine($"Customer: {name}, Email: {email}");
}
Imports IronXL
Imports System.Data
' Load CSV and convert to DataTable
Dim workbook As WorkBook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert worksheet to DataTable -- true parameter uses CSV header as column names
Dim dataTable As DataTable = sheet.ToDataTable(True)
' DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:")
For Each column As DataColumn In dataTable.Columns
' Property names from CSV header become column names
Console.WriteLine($" - {column.ColumnName}")
Next
Console.WriteLine(vbCrLf & $"Total records: {dataTable.Rows.Count}")
' Access data using standard DataTable syntax
For Each row As DataRow In dataTable.Rows
' Access by column index or name attribute
Dim name As String = row("Name").ToString()
Dim email As String = row("Email").ToString()
Console.WriteLine($"Customer: {name}, Email: {email}")
Next
ToDataTable içindeki boolean parametre, ilk satırın sütun başlıkları (true) mı yoksa veri (false) mi olması gerektiğini belirler. true olarak ayarlandığında, sonuç DataTable'in sütunları, CSV dosyasındaki başlık adlarını taşır, bu da row["Name"] gibi sütun adlarını kullanarak sezgisel veri erişimine olanak tanır.
Veritabanı ve UI Entegrasyonu için DataTable Kullanımı
Bu dönüşüm, SqlBulkCopy kullanarak veritabanı toplu eklemelerini gerektiren senaryolar, Windows Forms uygulamalarında DataGridView kontrollerinin doldurulması veya LINQ ifadeleri ile karmaşık veri dönüşümleri için değerli olur. DataTable formatı, .NET Core Web API projenizde Entity Framework ve diğer ORM araçlarıyla da doğal olarak entegre olur. DataTable dışa aktarma modelleri hakkında daha fazlasını IronXL DataTable kılavuzunda bulabilirsiniz.
Tabüler verilerle çalışma etrafındaki ek kalıplar için, Microsoft'un ADO.NET genel bakışı yetkili bir referanstır.
CSV Dosyaları Excel Formatına Nasıl Dönüştürülür?
IronXL'in göze çarpan yeteneklerinden biri, CSV verilerini uygun Excel formatlarına dönüştürmesidir. Bu, orijinal düz CSV verilerine formüller, formatlama, grafikler ve birden fazla çalışma sayfası eklemeyi mümkün kılar -- sadece CSV çıktısıyla başaramayacağınız bir şey.
using IronXL;
// Load CSV data from file path
string path = "quarterly_sales.csv";
WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
// Save as Excel XLSX format -- creates a new Excel file
workbook.SaveAs("quarterly_sales.xlsx");
// Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls");
Console.WriteLine("CSV successfully converted to Excel format");
using IronXL;
// Load CSV data from file path
string path = "quarterly_sales.csv";
WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
// Save as Excel XLSX format -- creates a new Excel file
workbook.SaveAs("quarterly_sales.xlsx");
// Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls");
Console.WriteLine("CSV successfully converted to Excel format");
Imports IronXL
' Load CSV data from file path
Dim path As String = "quarterly_sales.csv"
Dim workbook As WorkBook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ","c)
' Save as Excel XLSX format -- creates a new Excel file
workbook.SaveAs("quarterly_sales.xlsx")
' Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls")
Console.WriteLine("CSV successfully converted to Excel format")
SaveAs yöntemi, çıktı formatını dosya uzantısına göre otomatik olarak belirler. XLSX, Excel 2007 ve sonrasıyla uyumlu modern Office Open XML dosyaları oluştururken XLS, daha eski uygulamalar için eski İkili Değişim Dosya Formatı belgeleri üretir.
Giriş

Çıktı


Bu iş akışı, veritabanlarından veya API'lerden CSV çıktılarının kullanıcılara dağıtılmadan önce zenginleştirilmesi gerektiğinde özellikle kullanışlıdır. Dönüşümden sonra, Excel dosyası ek formatlama, formüller ekleyebilir veya diğer çalışma sayfalarıyla birleştirilebilir -- tümü IronXL'in düzenleme yetenekleri ile programlı olarak. Süreç, otomatik raporlama hatları veya planlanmış görevler için uygun hale getiren tamamen betiklenebilirdir.
CSV Verilerindeki Belirli Hücre Değerlerine Nasıl Erişirsiniz?
Tüm kayıtlar üzerinden döngüye girmenin ötesinde, IronXL, tanıdık Excel tarzı adresleme kullanarak doğrudan hücre erişimi sağlar. Bu, farklı veri türleri üzerinde hedeflenmiş veri çıkarımı ve güvenli tipte değer elde etmeyi mümkün kılar.
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Access specific cells using Excel-style addresses by index
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
Console.WriteLine($"Product: {productName}");
Console.WriteLine($"Quantity: {quantity}");
Console.WriteLine($"Price: ${price:F2}");
// Access a range of cells -- return records from column A
var productRange = sheet["A2:A10"];
Console.WriteLine("\nAll products:");
foreach (var cell in productRange)
{
Console.WriteLine($" - {cell.StringValue}");
}
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Access specific cells using Excel-style addresses by index
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
Console.WriteLine($"Product: {productName}");
Console.WriteLine($"Quantity: {quantity}");
Console.WriteLine($"Price: ${price:F2}");
// Access a range of cells -- return records from column A
var productRange = sheet["A2:A10"];
Console.WriteLine("\nAll products:");
foreach (var cell in productRange)
{
Console.WriteLine($" - {cell.StringValue}");
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Access specific cells using Excel-style addresses by index
Dim productName As String = sheet("A2").StringValue
Dim quantity As Integer = sheet("B2").IntValue
Dim price As Decimal = sheet("C2").DecimalValue
Console.WriteLine($"Product: {productName}")
Console.WriteLine($"Quantity: {quantity}")
Console.WriteLine($"Price: ${price:F2}")
' Access a range of cells -- return records from column A
Dim productRange = sheet("A2:A10")
Console.WriteLine(vbCrLf & "All products:")
For Each cell In productRange
Console.WriteLine($" - {cell.StringValue}")
Next
Hücre adresleme, harflerin CSV sütunlarını (A, B, C) ve sayılarının satır indeks konumlarını (1, 2, 3) temsil ettiği Excel konvansiyonlarını takip eder. Cell sınıfı, StringValue, IntValue, DecimalValue, BoolValue ve DateTimeValue gibi tür-spesifik erişim sağlar. Bu erişiciler, her şeyi dize değerleri olarak saklamaya kıyasla, otomatik olarak ayrıştırma ve dönüşüm yaparak manuel tip dökümü ihtiyacını ortadan kaldırır.
A2:A10 gibi bir gösterim kullanarak aralık seçimi, yineleme, toplama fonksiyonları ve toplu işlemleri destekleyen bir Aralık nesnesi döndürür. Bu, büyük CSV dosyalarından belirli sütunların veya dikdörtgen veri bölgelerinin çıkarılmasında değerli olur. Örneğin, belirli bir sütundan değerlerin bir listesini oluşturabilir veya filtrelenen verileri başka bir dosyaya yazabilirsiniz. Daha fazla desen için IronXL aralık kılavuzuna göz atın.
CSV Dosyalarını Okurken Hataları Nasıl Yönetirsiniz?
Üretim uygulamaları, dosya işlemleri etrafında savunma kodu gerektirir. CSV okuma, birkaç nedenden dolayı başarısız olabilir: dosya mevcut değildir, erişim reddedilmiştir, veri hatalı biçimlendirilmiştir veya çok büyük dosyalar için bellek yetersizdir. IronXL çağrılarını try/catch bloklarına sarmak ve yüklemeden önce yolları doğrulamak, ortamlarda güvenilir davranış sağlar.
using IronXL;
using System.IO;
string filePath = "customers.csv";
if (!File.Exists(filePath))
{
Console.WriteLine($"File not found: {filePath}");
return;
}
try
{
WorkBook workbook = WorkBook.LoadCSV(filePath, ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
DataTable dataTable = sheet.ToDataTable(true);
Console.WriteLine($"Loaded {dataTable.Rows.Count} records successfully.");
}
catch (IronXL.Exceptions.IronXLException ex)
{
Console.WriteLine($"IronXL parsing error: {ex.Message}");
}
catch (IOException ex)
{
Console.WriteLine($"File access error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Unexpected error: {ex.Message}");
}
using IronXL;
using System.IO;
string filePath = "customers.csv";
if (!File.Exists(filePath))
{
Console.WriteLine($"File not found: {filePath}");
return;
}
try
{
WorkBook workbook = WorkBook.LoadCSV(filePath, ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
DataTable dataTable = sheet.ToDataTable(true);
Console.WriteLine($"Loaded {dataTable.Rows.Count} records successfully.");
}
catch (IronXL.Exceptions.IronXLException ex)
{
Console.WriteLine($"IronXL parsing error: {ex.Message}");
}
catch (IOException ex)
{
Console.WriteLine($"File access error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Unexpected error: {ex.Message}");
}
Imports IronXL
Imports System.IO
Dim filePath As String = "customers.csv"
If Not File.Exists(filePath) Then
Console.WriteLine($"File not found: {filePath}")
Return
End If
Try
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, ExcelFileFormat.XLSX, ",")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim dataTable As DataTable = sheet.ToDataTable(True)
Console.WriteLine($"Loaded {dataTable.Rows.Count} records successfully.")
Catch ex As IronXL.Exceptions.IronXLException
Console.WriteLine($"IronXL parsing error: {ex.Message}")
Catch ex As IOException
Console.WriteLine($"File access error: {ex.Message}")
Catch ex As Exception
Console.WriteLine($"Unexpected error: {ex.Message}")
End Try
CSV Verileri için Doğrulama Desenleri
İstisnaları yakalamanın ötesinde, yüklemeden sonra satır ve sütun sayısını doğrulamak, kesilmiş dosyaları veya beklenmedik şema değişikliklerini tespit etmeye yardımcı olur. sheet.RowCount'yi beklenen bir minimum ile kontrol etmek veya belirli sütun başlıklarının ilk satırda bulunduğunu doğrulamak, veri sorunlarını verilerin aşağıya doğru yayılmadan önce erken yakalar. Microsoft'un istisna yönetimi rehberi, .NET'te yapılandırılmış hata yönetimi için en iyi uygulamaları kapsar.
Kullanıcı tarafından yüklenen CSV dosyalarını işleyen uygulamalar için, her zaman yüklemeden önce dosya boyutunu doğrulayın, dosya adlarını temizleyin ve yükleme noktasında izin verilen içerik türlerini kısıtlayın. Bu önlemler, aşırı büyük dosyalardan kaynaklanan kaynak tükenmesini önler ve yoldan yararlanma saldırılarına karşı koruma sağlar.
IronXL, kütüphaneye özgü hatalar için kendi özel istisna türü IronXL.Exceptions.IronXLException içerir, bu da ayrıştırma hatalarını genel giriş/çıkış sorunlarından ayırt etmeyi kolaylaştırır. Ayrıntıları daha fazla IronXL API referansında bulabilirsiniz.
Bellek Sorunları Olmadan Büyük CSV Dosyalarını Nasıl Okursunuz?
Yüz binlerce satır içeren dosyalar için, tüm veri setini bir kerede belleğe yüklemek pratik olmayabilir. IronXL, tüm dosyayı bellekte tüm verileri tutan bir WorkBook nesnesine okur. Büyük ölçekli ETL (Çıkart, Dönüştür, Yükle) senaryoları için, kaynak dosyayı yüklemeden önce bölerek CSV'yi toplu işlemlerle işlemek veya bir StreamReader'den satır akışı yaparak ayrı çalışma kitaplarına parça yazmak pratik bir stratejidir.
IronXL dokümantasyonu, büyük iş yükleri için performans hususlarını kapsar. CSV özelinde, CSV formatının satır-satır yapısı, veri seti tek bir bellekte yükleme için çok büyük olduğunda, manuel toplama ile basit bir File.ReadAllLines tahmin edilebilir hafıza ayak izi sağlar.
IronXL'in Alternatif CSV Kütüphaneleri ile Karşılaştırılması
IronXL, .NET için tek CSV kütüphanesi değildir. CsvHelper, yaygın olarak kullanılan ve akış, kayıt eşleme ve öznitelik tabanlı yapılandırma üzerinde uzmanlaşmış açık kaynaklı bir alternatiftir. Anahtar fark kapsam alanıdır: CsvHelper yalnızca CSV'ye odaklanırken, IronXL tüm tablo ekosistemini ele alır -- birleştirilmiş bir API aracılığıyla XLSX, XLS, CSV ve diğer formatları okuma, yazma ve dönüştürme. Uygulamanız zaten Excel işlemleri için IronXL kullanıyorsa, CSV'yi ayni kütüphane ile işlemek fazladan bir bağımlılığı önler. Yalnızca CSV formatları üzerinde çalışıyorsanız vе akış desteğine ihtiyacınız varsa, bir akış CSV kütüphanesi sizin için daha iyi hizmet edebilir.
| Özellik | IronXL | CsvHelper |
|---|---|---|
| CSV okuma | Evet | Evet |
| Excel (XLSX/XLS) desteği | Evet | Hayır |
| Büyük dosyaların akışı | Sadece bellek içinde | Evet (akış) |
| Özel ayırıcılar | Evet (listDelimiter) | Evet (yapılandırma) |
| DataTable dönüşümü | Yerleşik (ToDataTable) | Manuel eşleme |
| Lisans | Ticari | Açık kaynak (MS-PL) |
Sonraki Adımlarınız Neler?
Doğru yaklaşımı kullanırken, .NET'te CSV dosyalarını okumak için minimale çaba gerektirir. IronXL'nin LoadCSV yöntemi, ayrıştırma karmaşıklığını otomatik olarak yönetir, çeşitli ayırıcıları destekler, yapısal verilere anında erişim sağlar ve tek yöntem çağrılarıyla Excel veya DataTable'a dönüştürür. ASP.NET Core uygulaması, bir .NET Core Web API veya bir konsol projesi oluşturuyor olun, kütüphane CSV işleme sürecini baştan sona basitleştirir.
Burada öğrendiklerinizi genişletmek için IronXL yeteneklerinden daha fazlasını keşfedin:
- IronXL ürün sayfası -- tam özellik listesi ve lisanslama
- C#'da Excel dosyalarını nasıl okursunuz -- CSV becerilerinizi XLSX/XLS'e genişletin
- C#'da Excel dosyalarını yazma -- tablo oluşturma ve dışa aktarma işlemlerini programlı olarak gerçekleştirin
- DataTable ve DataSet dışa aktarma -- ADO.NET iş akışlarına bağlanın
- IronXL lisanslama -- dağıtım için lisanslama seçenekleri
Ücretsiz bir deneme başlatın ve IronXL'in .NET projelerinizde CSV dosyalarını nasıl basitleştirdiğini deneyimleyin. Üretim dağıtımı için, lisanslama seçenekleri süresiz kullanım hakları ve bir yıllık destek içerir.
Sıkça Sorulan Sorular
C#'da CSV dosyalarını okumanın en basit yolu nedir?
C#'da CSV dosyalarını okumanın en basit yolu IronXL kullanmaktır; bu yöntem, CSV verilerini işlemek için basit ve verimli bir yöntem sunar.
IronXL, büyük CSV dosyalarını verimli bir şekilde yönetebilir mi?
Evet, IronXL büyük CSV dosyalarını işlemek üzere tasarlanmıştır; bu, geniş veri setlerini performans sorunları olmadan işlemeye uygun hale getirir.
IronXL, .NET uygulamalarıyla uyumlu mu?
IronXL, tam olarak .NET uygulamalarıyla uyumludur; geliştiricilerin C# projelerine CSV okuma yeteneklerini kolaylıkla entegre etmelerine olanak tanır.
IronXL, farklı ayıraçlarla CSV dosyalarını okumayı destekliyor mu?
IronXL, çeşitli ayraçlarla CSV dosyalarını okuma desteği sunar ve farklı formatlardaki dosyaları işleyebilme esnekliği sağlar.
IronXL başlıklı CSV dosyalarını başlıklarla ayrıştırabilir mi?
Evet, IronXL başlıklarla CSV dosyalarını ayrıştırabilir; bu, verilere sütun adlarıyla kolay erişim sağlar.
IronXL, CSV veri manipülasyonunu nasıl basitleştirir?
IronXL, doğrudan C# içinde CSV verilerini okuma, düzenleme ve yazma için sezgisel yöntemler sunarak CSV veri manipülasyonunu basitleştirir.
IronXL'de CSV dosyalarını eşzamanlı olarak okumak için destek var mı?
IronXL, asenkron işlemler için destek sunarak CSV dosyalarını ana uygulama iş parçacığını engellemeden okumanıza olanak tanır.
IronXL, CSV verilerini Excel formatına dönüştürebilir mi?
IronXL, CSV verilerini Excel formatına dönüştürebilir ve bu da veri analizi ve sunumu için Excel'in özelliklerinden faydalanmanıza olanak tanır.
IronXL'in CSV dosyalarını okuma konusunda herhangi bir bağımlılığı var mı?
IronXL, CSV dosyalarını okumak için özel bir bağımlılığa ihtiyaç duymayan, tek başına bir kütüphanedir; projelerinizde kurulum işlemini basitleştirir.
IronXL, CSV'den diğer formatlara veri aktarmak için kullanılabilir mi?
Evet, IronXL, verilerinizi çeşitli formatlara, Excel dahil, CSV'den aktarabilir ve veri işleme ve raporlama konusunda esneklik sağlar.




