Altbilgi içeriğine atla
IRONXL KULLANARAK

IronXL Kullanarak C# Dilinde CSV Dosyalarını Nasıl Okunur

C# .NET'te CSV dosyalarını okumak IronXL ile basit hale gelir -- tek bir yöntem çağrısı, özel ayrıştırma kodu olmadan virgülle ayrılmış verileri yapılandırılmış bir çalışma kitabına yükler. Bu kılavuz, temel yükleme, özel sınırlayıcılar, DataTable dönüşümü, hücre düzeyinde erişim, hata ayıklama ve Excel biçimine dışa aktarma dahil ihtiyaçınız olan her tekniği anlatır.

.NET'te CSV Dosyalarını Okumanın En Kolay Yolu Nedir?

WorkBook.LoadCSV kullanarak CSV verilerini doğrudan bir çalışma kitabı yapısına aktarmak en basit yaklaşımdır. Bu tek bir metot, ayrıştırmayı, ayırıcı algılamayı ve veri organizasyonunu otomatik olarak halleder -- StreamReader oluşturmanıza veya her bir dize satırını elle işlemenize gerek yoktur.

IronXL'i Visual Studio'da NuGet Paket Yöneticisi Konsolu üzerinden yükleyin. .NET projenizi açın ve çalıştırın:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 1 - Kurulum

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
$vbLabelText   $csharpLabel

Girdi

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 2 - Örnek CSV Girdisi

Çıktı

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 3 - Konsol Çıkışı

LoadCSV metodu üç parametre alır: 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 kaydları içeren birincil yaprak sağlayan DefaultWorkSheet özelliği aracılığıyla erişilebilir hale gelir.

İç içe döngü yapısı her bir çalışma sayfasındaki Row üzerinden yinelemeye başlar, sonra o satırdaki her Cell üzerinden devam eder. Value özelliği, konsol çıktısında okunabilir sütun ayrımı yaratan sekme karakteriyle birlikte hücre içeriğini bir nesne olarak geri döndürür. Bu desen, kaynak dosyanın 10 satır içermesi veya binlerce kayıttan oluşan büyük CSV dosyaları içermesi fark etmeksizin aynı şekilde çalışır.

IronXL, .NET Framework, .NET Core ve .NET 5+ genelinde Microsoft Office kurulumu gerektirmeden çalışır -- bu da onu ASP.NET Core ve .NET Core Web API projeleri için ideal hale getirir. 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 neleri üstlendiğini anlamayı tercih ederseniz, bir sonraki bölüm manuel ayrıştırmanın neler içerdiğini kapsar.

Manuel CSV Ayrıştırması Bir Kütüphane Kullanımı ile Karşılaştırıldığında Nasıl?

IronXL'ın ortadan kaldırdığı karmaşıklığı anlamak, değerini netleştirir. Manuel CSV ayrıştırma, basit görünüyor olsa da herhangi bir projede hızla sorunlu hale gelen çoklu köşe durumlarının ele alınmasını 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
$vbLabelText   $csharpLabel

Girdi

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 4 - CSV Girdisi

Çıktı

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 5 - Elle CSV Ayrıştırma Çıkışı

Manuel yaklaşım, CSV alanları tırnak içinde gömülü virgüller içerdiğinde başarısız olur -- adres alanlarında veya açıklamalarda yaygın bir senaryo. Dosyaları doğru okumak, tırnaklı alanları, kaçış tırnaklarını, çok satırlı değerleri ve çeşitli kodlamaları yönetmeyi gerektirir. Kendi ayrıştırıcınızı oluşturmak, StreamReader oluşturmak, durum makinesi mantığını uygulamak ve tüm okuma sürecini kendiniz yönetmek anlamına gelir. Bu, tek satırlık bir şey için dikkate değer bir kod kalıbıdır.

IronXL alternatifi, tüm uç durumları otomatik olarak halleder:

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
$vbLabelText   $csharpLabel

WorkBook sınıfı ayrıştırma karmaşıklığını dahili olarak yönetir, bu sayede verilerle çalışmaya odaklanabilmenizi sağlar, çıkarma işine değil. IronXL'nin tüm yetenekleri hakkında daha fazla bilgiyi IronXL özellikleri genel bakışı 'nda okuyabilirsiniz.

Farklı CSV Ayırıcıları Nasıl Ele Alınır?

CSV dosyaları her zaman virgül ayırıcı olarak kullanmaz. Avrupa sistemi dışa aktarımları, ondalık sayılarda virgüller bulunduğundan genellikle noktalı virgül kullanır. Çeşitli uygulamalardan ve eski sistemlerden gelen veri dışa aktarımlarında Tab ile ayrılmış değerler (TSV) ve boru ile sınırlı dosyalar düzenli olarak görünür.

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")
$vbLabelText   $csharpLabel

LoadCSV içindeki listDelimiter parametresi, alan ayırıcı olarak herhangi bir tek karakter veya kaçış sekansını kabul eder. Sekme karakterleri \t kaçış sekansını kullanır. Yüklendikten sonra, veri yapısı orijinal formattan bağımsız olarak tutarlı kalır, böylece farklı ayırıcılarla birden çok kaynaktan gelen CSV dosyalarını işlemek kolaylaşır. Çoğu CSV dosyası için varsayılan değer bir virgüldür, ancak bu esneklik, bir projenin karşılaştığı tüm varyasyonları halleder.

Girdi

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 6 - Hayırktalı Virgülle Ayrılmış CSV Dosya Girdisi

Çıktı

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 7 - Hayırktalı Virgülle Ayrılmış Çıkış

RowCount ve ColumnCount özellikleri, dosyanın doğru yüklendiğini hızlı bir şekilde doğrular -- özellikle tanıdık olmayan veri kaynaklarıyla çalışırken veya ASP.NET Core bir uygulamada kullanıcı yüklemelerini doğrularken kullanışlıdır.

Kodlama Hususları

İngilizce veya Almanca verilerde aksanlı harfler gibi ASCII olmayan karakterler içeren dosyaları okurken, IronXL dosyanın bayt düzeni işareti (BOM) otomatik olarak okur. BOM olmayan dosyalar için, kaynaktaki kodlamayı doğrulamanız gerekebilir. Microsoft'un dosya kodlaması belgeleri, .NET'te kodlama türleri için kapsamlı bir referans sağlar.

CSV'yi DataTable'a Dönüştürmenin En İyi Yöntemleri Nelerdir?

CSV verilerini DataTable'e dönüştürmek, veritabanı işlemleriyle, UI uygulamalarında veri bağlamayla ve LINQ sorgularıyla entegrasyon sağlar. ToDataTable yöntemi, 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
$vbLabelText   $csharpLabel

ToDataTable içindeki boolean parametre, ilk satırın true sütun başlıkları mı yoksa false veri mi olacağını belirler. true olarak ayarlandığında, elde edilen DataTable sütunları, CSV dosyasından sütun başlık adlarını taşır, bu sayede row["Name"] gibi başlık adlarını kullanarak sezgisel veri erişimi sağlar.

Veritabanı ve UI Entegrasyonu için DataTable Kullanma

Bu dönüşüm, veritabanına SqlBulkCopy kullanarak toplu eklemeler gerektiren senaryolar, Windows Forms uygulamalarında DataGridView kontrollerini doldurmak veya LINQ ifadeleriyle karmaşık veri dönüşümleri yapmak için değerli olur. DataTable formatı, ayrıca Entity Framework ve diğer ORM araçlarıyla entegre olur, netinize .NET Core Web API projenize uygun. DataTable dışa aktarma kalıpları hakkında daha fazla bilgiyi IronXL DataTable kılavuzu 'nda okuyabilirsiniz.

.NET'te tablosal verilerle çalışma konusundaki ek kalıplar için, Microsoft'un ADO.NET genel bakışı yetkili bir referanstır.

CSV Dosyalarını Excel Formatına Nasıl Dönüştürürsünüz?

IronXL'nin öne çıkan yeteneklerinden biri, CSV verilerini uygun Excel formatlarına dönüştürmektir. Bu, formüller, biçimlendirme, grafikler ve başlangıçta düz CSV verilerine birden fazla çalışma sayfası eklemeyi sağlar -- bu, yalnızca CSV çıktısı ile elde edemediğiniz bir şeydir.

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")
$vbLabelText   $csharpLabel

SaveAs metodu, dosya uzantısına dayalı olarak çıkış formatını otomatik olarak belirler. XLSX, Excel 2007 ve sonrası ile uyumlu modern Office Open XML dosyaları oluştururken, XLS eski uygulamalar için legacy İkili Değiş Tokuş Dosya Formatı belgeleri üretir.

Girdi

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 8 - CSV Verisi

Çıktı

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 9 - Excel Çıkışı

 CSV .NET Okuma: IronXL kullanarak En Basit C# Yaklaşımı: Görüntü 10 - CSV'den Excel Çıkışı

Bu iş akışı, veri tabanlarından veya API'lerden dışa aktarılan CSV'lerin kullanıcılara dağıtılmadan önce geliştirilmesi gerektiğinde özellikle yararlı olur. Dönüştürmeden sonra, Excel dosyası ek biçimlendirme, formüller alabilir veya başka çalışma sayfalarıyla birleştirilebilir -- tümü programatik olarak IronXL'nin düzenleme yetenekleri yoluyla yapılabilir. Süreç tamamen betiklenebilir, bu da otomatik raporlama hatları veya zamanlanmış görevler için uygun hale getirir.

CSV Verilerindeki Belirli Hücre Değerlerine Nasıl Erişirsiniz?

Tüm kayıtlar arasından yineleme yapmanın ötesinde, IronXL, tanıdık Excel tarzı adresleme kullanarak doğrudan hücre erişimi sağlar. Bu, hedeflenmiş veri çıkarımı ve farklı veri türleri arasında tür güvenli değer alımı sağ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
$vbLabelText   $csharpLabel

Hücre adresleme, harflerin CSV sütunlarını (A, B, C) ve sayıların satır indeks pozisyonları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 özgül erişimciler sağlar. Bu erişimciler ayrıştırmayı ve dönüşümü otomatik olarak halleder, her şeyi dize değerleri olarak depolamaya kıyasla manuel tür dönüşümünü ortadan kaldırır.

A2:A10 gibi gösterimlerle yapılan aralık seçimi, yinelemeyi, toplu işlemleri ve toplu işlemleri destekleyen bir Range nesnesi döndürür. Bu, büyük CSV dosyalarından belirli sütunlar veya dikdörtgen veri bölgeleri çıkartırken değerli olur. Örneğin, belirli bir sütundan değerler listesi oluşturabilir veya başka bir dosyaya filtrelenmiş veriler yazabilirsiniz. Daha fazla kalıp için IronXL aralık kılavuzuna bakın.

CSV Dosyalarını Okurken Hataları Nasıl Yönetirsiniz?

Üretim uygulamaları, dosya işlemleri etrafında koruyucu kod gerektirir. CSV okuma, birkaç nedenden dolayı başarısız olabilir: dosya mevcut değildir, erişim reddedilir, veriler hatalıdır 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, çevreler arasında 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
$vbLabelText   $csharpLabel

CSV Verileri için Doğrulama Kalıpları

Hataları yakalamanın ötesinde, yükleme sonrası satır ve sütun sayımlarını doğrulamak, kesilmiş dosyaları veya beklenmeyen şema değişikliklerini tespit etmeye yardımcı olur. Beklenen en azın karşılaştırılması veya ilk satırda belirli sütun başlıklarının varlığının doğrulanması, downstream'e yayılmadan önce veri sorunlarını erken aşamada yakalar. Microsoft'un istisna yönetimi rehberi, .NET'te yapılandırılmış hata yönetimi için en iyi uygulamaları kapsar.

Kullanıcı yüklemesi olan CSV dosyaları işleyen uygulamalar için, her zaman dosya boyutunu yüklemeden önce doğrulayın, dosya adlarını temizleyin ve yükleme noktasında izin verilen içerik türlerini kısıtlayın. Bu tedbirler, aşırı büyük dosyalardan kaynaklanan kaynak tüketimini önler ve yol gezintisi saldırılarına karşı koruma sağlar.

IronXL, kütüphane özgü hatalar için kendi özel IronXl.Exceptions.IronXLException türünü içerir, bu da ayrıştırma hatalarını genel giriş/çıkış sorunlarından ayırmayı kolay hale getirir. Daha fazla ayrıntıyı 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 kümesini bir defada belleğe yüklemek pratik olmayabilir. IronXL tüm dosyayı WorkBook nesnesine okur ve tüm veriyi bellekte tutar. Büyük çaplı ETL (Çıkar, Dönüştür, Yükle) senaryoları için CSV'yi bölerek kaynak dosyayı yüklemeden önce işlemek veya bir StreamReader dan satırları aktarmak ve parçalara ayırıp ayrı çalışma kitaplarına yazmak pratik bir stratejidir.

IronXL Excel dosyalarını okuma kılavuzu, büyük iş yükleri için performans dikkate alınması gereken hususları kapsar. Özellikle CSV için, CSV formatının satır bazlı yapısı, veri seti tek bir bellek yüklemesi için çok büyük olduğunda basit bir File.ReadAllLines ile manuel toplu işlemeyi tahmin edilebilir bellek ayak izi sağlar.

IronXL ile Alternatif CSV Kütüphanelerini Karşılaştırma

IronXL, .NET için tek CSV kütüphanesi değildir. CsvHelper, akışla çalışma, kayıt eşleme ve öznitelik tabanlı yapılandırma konusunda uzmanlaşmış yaygın kullanıma sahip açık kaynaklı bir alternatiftir. Ana fark kapsamdadır: CsvHelper sadece CSV'ye odaklanırken, IronXL tüm tablo ekosistemini -- XLSX, XLS, CSV ve diğer formatları okuma, yazma ve dönüştürme -- birleştiren bir API üzerinden ele alır. Uygulamanız zaten Excel işlemleri için IronXL kullanıyorsa, aynı kütüphane ile CSV'yi işlemek ek bir bağımlılıktan kaçınmanıza olanak tanır. CSV tek çalıştığınız formatsa ve akış desteğine ihtiyaçınız varsa, bir akış CSV kütüphanesi size daha iyi hizmet edebilir.

IronXL ve CsvHelper: .NET'te CSV Okuma için Temel Farklar
Özellik IronXL CsvHelper
CSV okuma Evet Evet
Excel (XLSX/XLS) desteği Evet Hayır
Büyük dosyalarla akış Yalnızca bellek içi Evet (akış)
Özel ayırıcılar Evet (listDelimiter) Evet (özelleştirme)
DataTable dönüşümü Dahili (ToDataTable) Manuel eşleme
Lisans Ticari Açık kaynak (MS-PL)

Sıradaki Adımlarınız Neler?

.NET'te CSV dosyalarını okuma, doğru yaklaşımı kullanarak minimum çaba gerektirir. IronXL'nin LoadCSV metodu, 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 bir metot çağrısı ile Excel veya DataTable'ye dönüştürür. Bir ASP.NET Core uygulaması, bir .NET Core Web API veya konsol projesi inşa ediyor olun, kütüphane başından sonuna kadar CSV işlemini basitleştirir.

Burada öğrendiklerinizi genişletmek için daha fazla IronXL yeteneğini keşfedin:

Ücretsiz denemeyi başlatın ve IronXL'nin .NET projelerinizde CSV dosyalarını okumayı nasıl kolaylaştırdığını deneyimleyin. Üretim dağıtımı için lisanslama seçenekleri, sınırsız kullanım hakları ve bir yıl destek içerir.

Sıkça Sorulan Sorular

C#'ta CSV dosyalarini okumanin en basit yolu nedir?

C#'ta CSV dosyalarini okumanin en basit yolu, CSV verilerini ele almak için basit ve etkili bir yöntem sunan IronXL kullanmaktir.

IronXL büyük CSV dosyalarını verimli bir şekilde işleyebilir mi?

Evet, IronXL büyük CSV dosyalarini işlemek için tasarlanmistir ve bu nedenle performans sorunlari olmaksizin genis veri setlerini işlemek için uygun bir seçenektir.

IronXL, .NET uygulamaları ile uyumlu mu?

IronXL, .NET uygulamalariyla tamamen uyumludur ve geliştiricilerin C# projelerine kolayca CSV okuma özellikleri entegre etmesine olanak tanir.

IronXL, farkli ayiricilarla CSV dosyalarini okumayi destekliyor mu?

IronXL, farkli formatlara sahip dosyalarla calisma esnekligi saglayan çeşitli ayiricilara sahip CSV dosyalarini okumayi destekler.

IronXL, basliklara sahip CSV dosyalarini parse edebilir mi?

Evet, IronXL, basliklara sahip CSV dosyalarini parse edebilir ve verileri sutun adlarina gore kolayca erişime acabilir.

IronXL, CSV veri işleme işlemlerini nasil basitlestirir?

IronXL, C# icinde doğrudan CSV verilerini okuma, düzenleme ve yazma için sezgisel yöntemler sunarak CSV veri işleme işlemlerini basitlestirir.

IronXL'de CSV dosyalarini es zamanli okumak için destek var mi?

IronXL, ana uygulama ipligini bloke etmeden CSV dosyalarini okumanizi saglayan asenkron işlemler için destek sunar.

IronXL, CSV verilerini Excel formatina dönüştürebilir mi?

IronXL, Excel'in veri analizi ve sunumu için sundugu özelliklerden yararlanmaniza imkan tanirarak CSV verilerini Excel formatina dönüştürebilir.

IronXL'nin CSV dosyalarini okuma için herhangi bir bagimliligi var mi?

IronXL, projelerinizde kurulum süreçini basitlesdiren ve harici bagimliliklara ihtiyaç duymadan CSV dosyalarini okuyabilen bagimsiz bir kütüphane olarak calisir.

IronXL, CSV'den baska formatlara veri aktarimi için kullanilabilir mi?

Evet, IronXL, CSV'den Excel gibi çeşitli formatlara veri aktarimini gerceklestirebilir ve veri işleme ve raporlama işlemlerinde çok yonluluk saglar.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara