Altbilgi içeriğine atla
IRONXL KULLANARAK

C# CSV Dosya Okuyucu: CSV Verilerini IronXL ile Ayrıştırma ve İşleme

CSV (Virgülle Ayrılmış Değerler) dosyaları, işletme uygulamalarında her yerdedir ve finansal raporlardan müşteri veri ihracatlarına kadar değişiklik gösterir. CSV formatı yüzeyde aldatıcı bir şekilde basittir, ancak üretim kodunda işlenmesi, tırnak içinde yapılan alanlar, birden fazla ayırıcı türü, gömülü yeni satırlar ve ham metni güçlü tipli .NET nesnelerine dönüştürme ihtiyaçı ile uğraşırken hızla zorlaşabilir. IronXL, geliştiricilerin CSV verilerini Excel, XML veya diğer formatlara minimal kodla dönüştürmesine imkan tanıyan kurumsal düzeyde CSV işleme sağlayan bir .NET kütüphanesidir.

Bu kılavuz, IronXL'nin C# CSV dosya okuyucusu olarak nasıl çalıştığını ve onu .NET 10 uygulamalarınızda nasıl uygulayabileceğinizi anlatmaktadır. Bir ücretsiz deneme lisansı ile IronXL'yi kendiniz deneyin ve onun CSV ve Excel görevlerini nasıl yönetebileceğini öğrenmek için izleyin.

CSV Okuma için IronXL Nasıl Kurulur?

Projenize IronXL'yi eklemek sadece bir anınızı alır. Onu Visual Studio'daki NuGet Paket Yöneticisi üzerinden veya .NET CLI ya da PowerShell'deki NuGet Paket Yöneticisi Konsolu aracılığıyla komut satırı üzerinden kurabilirsiniz. Her iki yöntem de aynı paketi kurar ve herhangi bir .NET 10 proje türü ile çalışır.

# .NET CLI
dotnet add package IronXl.Excel

# NuGet Package Manager Console
Install-Package IronXl.Excel
# .NET CLI
dotnet add package IronXl.Excel

# NuGet Package Manager Console
Install-Package IronXl.Excel
SHELL

Kurulum seçenekleri ve yapılandırma hakkında daha fazla ayrıntı için IronXL kurulum belgelerine bakın.

Kurulduktan sonra, ilk CSV dosyanızı okumak çok az kod gerektirir. Aşağıdaki örnek .NET 10 üst düzey ifadelerini kullanıyor:

using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
Imports IronXL

' Load CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read a specific cell
Dim cellValue As String = sheet("A1").StringValue

' Iterate through all rows and cells
For Each row In sheet.Rows
    For Each cell In row
        Console.WriteLine(cell.StringValue)
    Next
Next
$vbLabelText   $csharpLabel

Bu WorkBook.LoadCSV metodu başlık tanımını ele alır, dahili bir veri yapısı oluşturur ve belleğe verimli bir biçimde ayrıştırma yapar -- veri yönetiminizi ilk satırından itibaren basitleştirir.

C# CSV Dosya Okuyucu Eğitim: CSV Verilerini Ayrıştırma ve Dönüştürme ile IronXL: Görsel 1 - IronXL NuGet kurulum

Özel Ayırım İşaretçileri ile CSV Dosyalarını Nasıl Okursunuz?

Gerçek dünya CSV dosyaları her zaman virgül kullanmaz. Özellikle uluslararası veri setlerinde virgüllerin ondalık ayırıcı olarak hizmet ettiği yerlerde noktalı virgüller, pipetler ve sekmeler yaygın alternatiflerdir. IronXL, esnek yükleme seçenekleri sayesinde herhangi bir ayırıcıyı işler.

using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listAyırıcı: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listAyırıcı: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listAyırıcı: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");
using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listAyırıcı: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listAyırıcı: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listAyırıcı: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");
Imports IronXL

' Load CSV with semicolon delimiter (common in European data exports)
Dim workbook As WorkBook = WorkBook.LoadCSV("european-data.csv",
    fileFormat:=ExcelFileFormat.XLSX,
    listAyırıcı:=";")

' Load tab-separated values (TSV)
Dim tsvWorkbook As WorkBook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat:=ExcelFileFormat.XLSX,
    listAyırıcı:=vbTab)

' Load pipe-delimited file
Dim pipeWorkbook As WorkBook = WorkBook.LoadCSV("log_export.csv",
    fileFormat:=ExcelFileFormat.XLSX,
    listAyırıcı:="|")

' Access data normally after loading
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim totalSales As Decimal = sheet("B2:B10").Sum()

Console.WriteLine($"Total sales: {totalSales}")
$vbLabelText   $csharpLabel

listAyırıcı parametresi herhangi bir dizeyi kabul eder ve size ayrıştırma davranışı üzerinde tam kontrol sağlar. IronXL, ayrıştırma sırasında sütun değerlerini ve veri türlerini korur -- sayısal değerler sayı olarak kalır, tarihler DateTime nesneleri olarak kalır ve formüller ilişkilerini sürdürür.

Biçimlendirmesi tutarsız dosyalar için, IronXL'nin hata yönetimi, yanlış formatlanmış satırları uygulama çökmeden yönetir, böylece bireysel satırlar problemli olsa bile geçerli veriler işlenmeye devam eder.

C# CSV Dosya Okuyucu Eğitim: CSV Verilerini Ayrıştırma ve Dönüştürme ile IronXL: Görsel 2 - Başlangıç örnek çıktısı

Desteklenen Dosya Formatları ve Ayırıcılar

IronXL, CSV dosyalarını okurken şu ayırıcı türlerini yüklemeyi destekler:

IronXL'nin LoadCSV metodunun desteklediği yaygın ayırıcı türleri
Ayırıcı Karakter Yaygın Kullanım Durumu
Virgül , Standart CSV, ABD bölge yazıları
Noktalı virgül ; Avrupa bölgesi yazıları (virgülün ondalık ayırıcı olduğu yerlerde)
Sekme Sekmeyle ayrılmış değerler (TSV), veri tabanı yazıları
Dik çizgi | Günlük dosyaları, sistem yazıları
Özel dize Herhangi Tescilli veri formatları, çok karakterli ayırıcılar

CSV Verilerini C# Nesnelerine Nasıl Ayırırsınız?

CSV satırlarını güçlü tipte nesnelere dönüştürmek, veri işlemlerini basitleştirir ve LINQ işlemlerini mümkün kılar. IronXL, hücre erişim metodları aracılığıyla bu eşlemeyi kolaylaştırır. Aşağıdaki kod, .NET 10 üst düzey ifadeleri kullanarak bir CSV dosyasını tipli nesne listesine nasıl eşleştireceğinizi gösterir:

using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");
using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");
Imports IronXL

' Define a typed model matching your CSV structure
Public Class Product
    Public Property Name As String
    Public Property Price As Decimal
    Public Property Stock As Integer
    Public Property LastUpdated As DateTime?

    Public Sub New(name As String, price As Decimal, stock As Integer, lastUpdated As DateTime?)
        Me.Name = name
        Me.Price = price
        Me.Stock = stock
        Me.LastUpdated = lastUpdated
    End Sub
End Class

' Load and parse CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

Dim products As New List(Of Product)()

' Start from row 2 to skip the header row
For row As Integer = 2 To sheet.RowCount
    products.Add(New Product(
        Name:=sheet($"A{row}").StringValue,
        Price:=sheet($"B{row}").DecimalValue,
        Stock:=sheet($"C{row}").IntValue,
        LastUpdated:=sheet($"D{row}").DateTimeValue
    ))
Next

' Use LINQ for analysis after loading
Dim lowStock = products.Where(Function(p) p.Stock < 10).ToList()
Dim highValue = products.Where(Function(p) p.Price > 100D).OrderByDescending(Function(p) p.Price).ToList()

Console.WriteLine($"Products with low stock: {lowStock.Count}")
Console.WriteLine($"High-value products: {highValue.Count}")
$vbLabelText   $csharpLabel

IronXL'nin türdeş değer özellikleri -- StringValue, DecimalValue, IntValue, DateTimeValue -- dönüştürmeleri güvenli bir şekilde ele alır, geçersiz veriler için varsayılan değerler döndürür ve istisnalar fırlatmaz. Bu defansif yaklaşım, uygulamaların kusurlu verileri kesinti olmadan ele almasını garanti eder. Bu, C# 9'da tanıtılan ve eşlenen CSV satırları için özlü, değiştirilemez bir veri modeli sağlayan C# kayıt türleri ile doğal olarak eşleşir.

IronXL özellikler sayfası, hücre verilerini okumak için mevcut değer erişimci türlerinin tam bir özetini sağlar.

C# CSV Dosya Okuyucu Eğitim: CSV Verilerini Ayrıştırma ve Dönüştürme ile IronXL: Görsel 3 - Farklı ayraçları okuma çıktısı

LINQ ile CSV Verilerini Nasıl Filtreler ve Sorgularsınız?

CSV verileri WorkSheet içine yüklendikten sonra, aralık seçiciler kullanarak çalışabilir veya LINQ sorguları için nesnelere dönüştürebilirsiniz. Basit sütun işlemleri için aralık tabanlı erişim en doğrudan yoldur:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("sales-data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read entire columns using range notation
Dim productNames = sheet("A2:A100") _
    .Select(Function(cell) cell.StringValue) _
    .Where(Function(name) Not String.IsNullOrEmpty(name)) _
    .ToList()

' Aggregate numeric columns directly
Dim totalRevenue As Decimal = sheet("C2:C100").Sum()
Dim averageOrder As Decimal = sheet("C2:C100").Avg()

Console.WriteLine($"Products loaded: {productNames.Count}")
Console.WriteLine($"Total revenue: {totalRevenue:C}")
Console.WriteLine($"Average order value: {averageOrder:C}")
$vbLabelText   $csharpLabel

Bu aralık tabanlı yaklaşım, daha büyük dosyalarda performansı iyileştirerek basit toplayıcılar için satır satır yinelemeyi önler. Desteklenen aralık işlemlerinin tam listesi için IronXL belgelerine bakın.

CSV'yi C#'ta Excel Formatına Nasıl Dönüştürürsünüz?

Birçok iş akışı, gelişmiş analiz, biçimlendirme veya dağıtım için CSV verilerini Excel formatında gerektirir. IronXL, tüm veri bütünlüğünü korurken bu dönüşümü basit hale getirir.

using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");
using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");
Imports IronXL

' Load CSV file
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("monthly-report.csv")
Dim sheet As WorkSheet = csvWorkbook.DefaultWorkSheet

' Apply formatting before saving
sheet("A1:D1").Style.Font.Bold = True
sheet("A1:D1").Style.BackgroundColor = "#4472C4"
sheet("A1:D1").Style.Font.Color = "#FFFFFF"

' Apply currency format to price column
sheet("B2:B1000").FormatString = "$#,##0.00"

' Apply date format to date column
sheet("D2:D1000").FormatString = "yyyy-MM-dd"

' Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx")

Console.WriteLine("Conversion complete: monthly-report.xlsx")
$vbLabelText   $csharpLabel

Dönüşüm, sayısal hassasiyeti, tarih formatlarını ve manuel dönüşüm yöntemleriyle sıklıkla sorun çıkaran özel karakterleri korur. IronXL, büyük veri setleriyle dahi hızlı açılan verimli dosyalar oluşturarak, sonuçtaki Excel dosya yapısını otomatik olarak optimize eder.

Çıkış formatı üzerinde ek kontrol için, ihracat nasıl yapılır kılavuzu XLSX, XLS, CSV ve PDF ihracatı gibi seçenekleri kapsar. Ayrıca Excel dosyalarını yazmayı ve sıfırdan Excel dosyaları oluşturmayı öğrenebilirsiniz.

C# CSV Dosya Okuyucu Eğitim: CSV Verilerini Ayrıştırma ve Dönüştürme ile IronXL: Görsel 4 - CSV verilerini ayrıştırma çıktısı

Veritabanı İşlemleri için CSV'yi DataSet'e Dönüştürme

CSV verilerini daha fazla işleme veya veritabanı eklemesi için DataSet içine yüklemeniz gerektiğinde, IronXL doğrudan dönüşüm desteği sağlar. Excel'den DataSet'e rehberi bunu ayrıntılı bir şekilde açıklar:

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first DataSekmele
DataSekmele customerSekmele = dataSet.Sekmeles[0];

Console.WriteLine($"Rows loaded: {customerSekmele.Rows.Count}");
Console.WriteLine($"Columns: {customerSekmele.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customerSekmele.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first DataSekmele
DataSekmele customerSekmele = dataSet.Sekmeles[0];

Console.WriteLine($"Rows loaded: {customerSekmele.Rows.Count}");
Console.WriteLine($"Columns: {customerSekmele.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customerSekmele.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
Imports IronXL
Imports System.Data

Dim workbook As WorkBook = WorkBook.LoadCSV("customer-export.csv")

' Convert entire workbook to DataSet
Dim dataSet As DataSet = workbook.ToDataSet()

' The first sheet becomes the first DataTable
Dim customerTable As DataTable = dataSet.Tables(0)

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}")
Console.WriteLine($"Columns: {customerTable.Columns.Count}")

' Process with standard ADO.NET
For Each row As DataRow In customerTable.Rows
    Dim name As String = If(row("Name")?.ToString(), String.Empty)
    Dim email As String = If(row("Email")?.ToString(), String.Empty)
    Console.WriteLine($"Customer: {name} <{email}>")
Next
$vbLabelText   $csharpLabel

Bu yaklaşım ADO.NET iş akışlarıyla doğrudan entegre olur ve standart veri adaptörleri aracılığıyla CSV verilerini SQL Server, SQLite veya diğer ilişkisel veritabanlarına aktarırken kullanışlıdır. Çünkü DataSet ve DataSekmele çekirdek .NET türleridir, bu yol IronXL'ın kendisi dışında hiçbir ek bağımlılık gerektirmez.

Büyük CSV Dosyalarını Nasıl Ele Alır ve Performansı Nasıl Optimize Edersiniz?

On binlerce satır veya daha fazla olan büyük CSV dosyalarını işlemek, verilerin nasıl erişileceğine ve belleğin nasıl yönetileceğine dikkat gerektirir. IronXL, büyük dosya senaryolarına yardımcı olan özellikler içerir.

Performans için Aralık İşlemlerini Kullanma

Büyük veri setlerinde en iyi performans için aralık işlemlerini, her bir hücreye bir kerede erişmek yerine kullanın. Aralık işlemleri, IronXL'nin dahili motoru tarafından daha verimli bir şekilde işlenir:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("large-dataset.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

Dim rowCount As Integer = sheet.RowCount
Dim colCount As Integer = sheet.ColumnCount

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns")

' Efficient: read entire range at once
Dim allData = sheet($"A1:{GetColumnLetter(colCount)}{rowCount}") _
    .Select(Function(cell) cell.StringValue) _
    .ToList()

' Efficient: aggregate a column without row-by-row iteration
Dim columnSum As Decimal = sheet($"B2:B{rowCount}").Sum()

Console.WriteLine($"Column B total: {columnSum}")

Private Shared Function GetColumnLetter(col As Integer) As String
    Dim result As String = String.Empty
    While col > 0
        col -= 1
        result = ChrW(AscW("A"c) + col Mod 26) & result
        col \= 26
    End While
    Return result
End Function
$vbLabelText   $csharpLabel

IronXL, CSV dosyalarını yüklerken UTF-8, UTF-16, ASCII dahil metin kodlaması varyasyonlarını otomatik olarak ele alır, böylece sütun değerlerindeki uluslararası karakterler ek yapılandırma gerektirmeden doğru şekilde görüntülenir. Bu, UTF-8 BOM veya alternatif kodlamaların yaygın olduğu bölgelerdeki sistemlerden çıkarılan dosyalar için özellikle önemlidir.

Güvenilmeyen CSV Kaynakları için Hata Yönetimi

Güvenilmeyen veya değişken kaynaklardan alınan CSV dosyalarını işlemek, try-catch bloklarında işlemleri sarmalamak ek bir güvenlik katmanı sağlar:

using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXl.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXl.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
Imports IronXL

Dim filePath As String = "user-uploaded-data.csv"

Try
    Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
    Dim sheet As WorkSheet = workbook.DefaultWorkSheet

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}")

    For row As Integer = 2 To sheet.RowCount
        Dim value As String = sheet($"A{row}").StringValue
        If Not String.IsNullOrWhiteSpace(value) Then
            Console.WriteLine(value)
        End If
    Next
Catch ex As IronXl.Exceptions.IronXLException
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}")
Catch ex As IOException
    Console.WriteLine($"File access error: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

IronXL nasıl yapılır kılavuzları, dosyalar, akımlar ve bayt dizileri dahil çeşitli kaynaklardan veri ithalat desenlerini kapsar.

C# CSV Dosya Okuyucu Eğitim: CSV Verilerini Ayrıştırma ve Dönüştürme ile IronXL: Görsel 5 - CSV'yi Excel formatına dönüştürme

Platformlar Arası Dağıtım

IronXL, Microsoft Office'ten bağımsız çalışır ve bu durum, onu sunucu ortamları ve bulut dağıtımları için uygun hale getirir. Windows, Linux, macOS, Docker kapları veya Azure veya AWS üzerinde bulut işlevleri olarak dağıtım yaparken, IronXL tüm platformlar üzerinde yapılandırma değişiklikleri olmadan tutarlı sonuçlar verir.

Bu platformlar arası yetenek, hafif kapların veri işleme görevlerini yönlendirdiği mikro hizmet mimarileri için değerlidir. IronXL özellikler genel bakış, desteklenen ortamlar ve çalışma zamanı hedeflerinin tam listesini detaylandırır.

IronXL Lisansını Nasıl Alırsınız?

IronXL'nin üretim ortamlarında kullanımı için bir lisans anahtarı gerektirir. Değerlendirme için bir ücretsiz deneme lisansı mevcuttur ve ticari lisanslar bireysel geliştiriciler, ekipler ve organizasyonlar için mevcuttur.

IronXL çağrılarını yapmadan önce uygulamanızda lisans anahtarını uygulayın:

using IronXL;

// Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");
using IronXL;

// Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");
Imports IronXL

' Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"

' Verify the license is active
If IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE") Then
    Console.WriteLine("IronXL license is active.")
End If

' Now use IronXL normally
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Console.WriteLine($"Loaded {sheet.RowCount} rows.")
$vbLabelText   $csharpLabel

Deneme ve lisanslama seçenekleri için IronXL lisanslama sayfasını ziyaret edin.

IronXL'i CSV İşleme İçin Doğru Seçim Yapan Nedir?

IronXL, C# CSV dosyalarını okuma işlemini zahmetli bir ayrıştırma görevinden basit bir operasyona dönüştürür. Kütüphane, manuel ayrıştırmanın yanlış yaptığı – içine gömülü virgüller, tırnak içinde satır sonları, tutarsız ayraçlar, kodlama varyasyonları ve hatalı satırlar – gibi yaygın sınır durumlarını her senaryo için özel kod gerektirmeden ele alır. İster hızlı bir kerelik veri içe aktarma ihtiyaçınız olsun, ister günde binlerce dosya işleyen bir üretim hattı olsun, aynı API her iki bağlamda da çalışır.

Manuel CSV ayrıştırılması, string.Split veya StreamReader ile yapıldığında, tırnak içindeki alanlar ayraç karakterini içerdiğinde veya alan değerlerinde satır sonları göründüğünde hızla bozulur. IronXL, varsayılan olarak bu durumları tırnak içi alan işleme ve kaçış dizisi için CSV spesifikasyonu takip ederek doğru şekilde ele alır.

.NET 10'da CSV işleri için IronXL'i ayıran başlıca avantajlar:

  • Office bağımlılığı yok: Sunucu ve bulut dağıtımları, Microsoft Office veya herhangi bir COM birlikte çalışırlığını yüklemeden çalışır
  • Özel ayraçlar: Herhangi bir ayraç karakterine veya dizgesine listAyırıcı parametresiyle destek sağlanır
  • Tür güvenli hücre erişimi: StringValue, DecimalValue, IntValue ve DateTimeValue erişimcileri kötü veride istisna atmak yerine güvenli varsayılanlar döndürür
  • Aralık operasyonları: Satır satır yineleme yapmadan aralıklar arasında veri toplama ve sorgulama
  • Format dönüştürme: CSV yükleyip XLSX, XLS, PDF veya diğer formatlar olarak kaydetme işlemi tek bir iş akışında gerçekleştirilir
  • DataSet entegrasyonu: Yüklenmiş çalışma kitaplarını ADO.NET ve veritabanı operasyonları için DataSet / DataSekmele'e dönüştürün
  • Çapraz platform: Windows, Linux, macOS, Docker ve bulut ortamlarında değişiklik yapmadan çalışır

Daha fazla detay ve formül desteği için IronXL dokümantasyona ve hücre biçimlendirme kılavuzuna ulaşabilirsiniz.

CSV dosyalarını güvenle işlemek için hazır mısınız? Ücretsiz deneme ile başlayın ve tam IronXL özellik setini keşfedin.

Sıkça Sorulan Sorular

Bir CSV dosyası nedir ve neden yaygın olarak kullanılır?

CSV dosyası, veya virgülle ayrılmış değerler dosyası, tablolumuş verileri saklamak için basit bir metin formatıdır. İş uygulamalarında verilerin farklı sistemler arasında dışa ve içe aktarılmasını sağladığı için yaygın olarak kullanılır.

IronXL, C#'da CSV dosya ayrıştırmaya nasıl yardımcı olur?

IronXL, farklı sütun ayırıcıları, tırnaklı alanlar ve veri tipi dönüşümleri dahil olmak üzere karmaşık CSV yapılarıyla başa çıkma araçları sunarak C#'da CSV dosya ayrıştırmayı basitleştirir.

IronXL, CSV verilerini başka formatlara dönüştürebilir mi?

Evet, IronXL, geliştiricilerin CSV verilerini XML ve Excel gibi çeşitli formatlara dönüştürmelerine olanak tanıyarak farklı veri işleme ihtiyaçları için esnek hale getirir.

CSV dosya ayrıştırmanın yaygın zorlukları nelerdir?

Yaygın zorluklar arasında farklı sütun ayırıcılarını yönetme, tırnaklı alanları yönetme ve doğru veri tipi dönüşümleri yer alır. IronXL, gelişmiş ayrıştırma yetenekleriyle bu sorunları hafifletir.

IronXL, kurumsal düzeyde CSV işleme için uygun mu?

Evet, IronXL, .NET uygulamaları için güçlü ve ölçeklenebilir CSV dosya işleme çözümleri sunarak kurumsal kullanıma hazır olarak tasarlanmıştır.

IronXL, büyük CSV dosyalarını verimli bir şekilde işlemek için destek sağlıyor mu?

IronXL, büyük CSV dosyalarını hız veya doğruluktan ödün vermeden verimli bir şekilde işlemek için optimize edilmiştir.

IronXL, özelleştirilmiş ayırıcılarla CSV dosyalarını işleyebilir mi?

Evet, IronXL, standart olmayan CSV formatlarıyla başa çıkarken geliştiricilere esneklik sağlayarak özel ayırıcılarla CSV dosyalarını destekler.

IronXL, CSV dosyalarındaki tırnaklı alanları nasıl ele alır?

IronXL, CSV dosyalarında alıntılanmış alanları doğru bir şekilde ayrıştırır, veri bütünlüğünü ve okuma sürecinde uygun dönüşüm sağlanmasını temin eder.

IronXL ile CSV ayrıştırma için hangi programlama dilleri kullanılabilir?

IronXL bir .NET kütüphanesidir, bu yüzden .NET framework'ü tarafından desteklenen C# ve VB.NET gibi dillerle kullanılabilir.

IronXL ile CSV dosyaları kullanımı için kod örnekleri mevcut mu?

Evet, IronXL dokümantasyonu, C# uygulamalarında CSV dosyalarını okuma, ayrıştırma ve işleme için tamamlanmış kod örnekleri sağlar.

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