Altbilgi içeriğine atla
IRONXL KULLANARAK

C# içinde CSV İçe Aktarımı | ASP.NET Core Eğitimi | IronXL

ASP.NET Core ile C#'da bir CSV dosyası içe aktarmak, dosya akışını okumayı, sınırlı satırları çözümlemeyi ve her kaydı yazılmış bir objeye eşlemeyi gerektirir -- tümünü verilerle yararlı bir şey yapmadan önce. IronXL tüm adımları tek bir API ile ele alır ve bu hem CSV, XLSX hem de TSV dosyaları için eşit derecede iyi çalışır, böylece uygulama mantığınızla ilgilenirken kenar durumlarını dize ayırmak için zaman harcamazsınız.

Ücretsiz denemenizi başlatın ve bu kod örneklerini kendi ortamınızda test edin.

.NET Projesine IronXL Nasıl Kurulur?

Herhangi bir çözümleme kodu yazmadan önce, IronXL'yi projenize ekleyin. Visual Studio'daki Paket Yöneticisi Konsolu veya proje dizininizdeki bir terminali açın ve aşağıdaki komutlardan birini çalıştırın:

Install-Package IronXL.Excel

Paket .NET 10, .NET 6+, .NET Framework 4.6.2+ ve .NET Standard 2.0'ı hedefler, böylece her türlü modern proje türüne uygun hale getirir. Sunucuda herhangi bir Microsoft Office kurulumuna gerek yok. Paket geri yüklendikten sonra, kütüphaneyi çağıran herhangi bir dosyanın üstüne using IronXL; ekleyin.

Genel araç kurulumu ve CI/CD boru hattı yapılandırması gibi ayrıntılı kurulum seçenekleri için IronXL kurulum kılavuzu bölümünü ziyaret edin.

ASP.NET Core'da CSV Dosyası Nasıl İçe Aktarılır?

ASP.NET Core'da bir CSV dosyası içe aktarma, sunucudan dosya akışını okumayı, her satırı çözümlemeyi ve değerleri model sınıfına eşlemeyi gerektirir. Bazı geliştiriciler manuel StreamReader uygulamaları veya üçüncü taraf paketlere yönelirken, IronXL, Excel formatlarının yanında CSV dosyalarını da ek bir yapılandırma gerektirmeden işleyen tek bir yöntem sunar.

Aşağıdaki kod, IronXL'in WorkBook.LoadCSV yöntemi kullanılarak bir CSV dosyasının nasıl yükleneceğini gösteriyor:

using IronXL;

// Load the CSV file directly using the full file path
var csv = WorkBook.LoadCSV("products.csv");
WorkSheet worksheet = csv.DefaultWorkSheet;

// Access CSV data by iterating through rows
foreach (var row in worksheet.Rows)
{
    string productName = row.Columns[1].StringValue;
    decimal price = row.Columns[2].DecimalValue;
    Console.WriteLine($"Product: {productName}, Price: {price}");
}
using IronXL;

// Load the CSV file directly using the full file path
var csv = WorkBook.LoadCSV("products.csv");
WorkSheet worksheet = csv.DefaultWorkSheet;

// Access CSV data by iterating through rows
foreach (var row in worksheet.Rows)
{
    string productName = row.Columns[1].StringValue;
    decimal price = row.Columns[2].DecimalValue;
    Console.WriteLine($"Product: {productName}, Price: {price}");
}
Imports IronXL

' Load the CSV file directly using the full file path
Dim csv = WorkBook.LoadCSV("products.csv")
Dim worksheet As WorkSheet = csv.DefaultWorkSheet

' Access CSV data by iterating through rows
For Each row In worksheet.Rows
    Dim productName As String = row.Columns(1).StringValue
    Dim price As Decimal = row.Columns(2).DecimalValue
    Console.WriteLine($"Product: {productName}, Price: {price}")
Next
$vbLabelText   $csharpLabel

WorkBook.LoadCSV Yöntemini Anlama

WorkBook.LoadCSV yöntemi, CSV dosyasını okur ve her satırın bir satır, her sınırlanmış değerin bir hücre haline geldiği bir çalışma sayfası oluşturur. IronXL otomatik olarak sınırlayıcıyı (virgül, noktalı virgül veya sekme) algılar ve değer içinde virgüller içeren alıntılanmış alanları ele alır. Standart CSV dosyaları için sınırlayıcıyı manuel olarak yapılandırmanıza gerek yoktur.

StringValue, DecimalValue, IntValue ve DateTimeValue gibi hücre değeri erişicileri tip dönüşümünü işleyerek, int.TryParse veya decimal.Parse ile manuel ayrıştırmadan kaçınmanızı sağlar. Bir hücre boşsa veya tanınmayan bir değer içeriyorsa, bu erişimciler yığın içe aktarma işlemleri sırasında işlenmemiş hataları önleyecek şekilde türün varsayılan değerini döndürür.

Bu yaklaşım, özellikle kaçış tırnakları, Windows-stili satır sonları ve çok satırlı hücre değerleri gibi kenar durumları için özel uygulamaların gerektirdiği hata eğilimli manuel dize çözümlemesini ortadan kaldırır. Desteklenen formatlar ve sınırlayıcı seçenekleriyle ilgili daha fazla ayrıntı için IronXL CSV dokümantasyonu sayfasına bakın.

ASP CSV İçe Aktarma: Tüm C# Geliştirici Kılavuzu: Görüntü 1 - Basit bir CSV dosyasını içe aktarma ve konsolda çıktıyı okuma

CSV Verileri için Nasıl Model Sınıfı Oluşturursunuz?

CSV verilerini güçlü-türlü nesnelere eşlemek, dosya yapısını yansıtan bir model sınıfı gerektirir. Ham dize verilerini tamsayılar, ondalık sayılar ve DateTime değerleri gibi belirli türlere dönüştürürsünüz. Ürün envanter verileri için, her CSV sütununa karşılık gelen özelliklere sahip bir sınıf oluşturun:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
    public int Quantity { get; set; }
}
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
    public int Quantity { get; set; }
}
Public Class Product
    Public Property Id As Integer
    Public Property Name As String = String.Empty
    Public Property Price As Decimal
    Public Property Quantity As Integer
End Class
$vbLabelText   $csharpLabel

CSV Satırlarını Türlü Koleksiyonlara Ayrıştırma

Model sınıfı tanımlandıktan sonra, CSV kayıtlarını türlü bir koleksiyona ayrıştırabilirsiniz. Aşağıdaki örnek, bir döngü indeksi kullanarak başlık satırını atlar ve ardışık her satırı bir Product nesnesine eşler:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet ws = workbook.DefaultWorkSheet;
var records = new List<Product>();

// Skip header row (index 0), iterate through data rows
for (int i = 1; i < ws.Rows.Count(); i++)
{
    var row = ws.Rows[i];
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        Quantity = row.Columns[3].IntValue
    };
    records.Add(product);
}

Console.WriteLine($"Loaded {records.Count} products.");
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet ws = workbook.DefaultWorkSheet;
var records = new List<Product>();

// Skip header row (index 0), iterate through data rows
for (int i = 1; i < ws.Rows.Count(); i++)
{
    var row = ws.Rows[i];
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        Quantity = row.Columns[3].IntValue
    };
    records.Add(product);
}

Console.WriteLine($"Loaded {records.Count} products.");
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.csv")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
Dim records As New List(Of Product)()

' Skip header row (index 0), iterate through data rows
For i As Integer = 1 To ws.Rows.Count() - 1
    Dim row = ws.Rows(i)
    Dim product As New Product With {
        .Id = row.Columns(0).IntValue,
        .Name = row.Columns(1).StringValue,
        .Price = row.Columns(2).DecimalValue,
        .Quantity = row.Columns(3).IntValue
    }
    records.Add(product)
Next

Console.WriteLine($"Loaded {records.Count} products.")
$vbLabelText   $csharpLabel

records koleksiyonu artık, veritabanı işlemleri, JSON serileştirme veya ileri iş mantığı için hazır, tipli Product nesnelerini içeriyor. IronXL'nin hücre değer erişimcileri tür dönüşümünü otomatik olarak ele alır, opsiyonel alanlar için intihaz yönetimini içerir.

Opsiyonel ve Nullable Alanlarla Çalışma

Gerçek yaşam CSV dosyaları genellikle boş hücreler veya opsiyonel sütunlar içerir. IronXL'nin değer erişimcileri, bir hücre boş olduğunda istisna yerine varsayılan değerleri döndürür. Nullable türler için bir koşul kontrolü kullanabilirsiniz:

// Reading an optional DateTime field
DateTime? lastUpdated = string.IsNullOrEmpty(row.Columns[4].StringValue)
    ? null
    : row.Columns[4].DateTimeValue;
// Reading an optional DateTime field
DateTime? lastUpdated = string.IsNullOrEmpty(row.Columns[4].StringValue)
    ? null
    : row.Columns[4].DateTimeValue;
' Reading an optional DateTime field
Dim lastUpdated As DateTime? = If(String.IsNullOrEmpty(row.Columns(4).StringValue), Nothing, row.Columns(4).DateTimeValue)
$vbLabelText   $csharpLabel

Bu desen, her hücre erişimini bir try-catch bloğuna sarmadan içe aktarma kodunuzu savunmacı tutar. Karmaşık veri türleri ve büyük dosyalarla çalışma konusunda rehberlik için IronXL WorkSheet dokümantasyonu bölümünü ziyaret edin.

Bir Web API'sinde CSV Dosya Yüklemeleri Nasıl Yönetilir?

Tarayıcıdan gelen CSV dosya yüklemelerini kabul eden bir API uç noktası oluşturmak, ASP.NET Core'un IFormFile ile IronXL'in ayrıştırma yeteneklerini birleştirmeyi gerektirir. Diğer işlemleri yapan eksiksiz bir denetleyici uygulaması gösteren kod aşağıdadır.

using IronXL;
using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class CsvController : ControllerBase
{
    [HttpPost("upload")]
    public async Task<IActionResult> UploadCsv(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("Please upload a valid CSV file.");

        try
        {
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Position = 0;

            WorkBook workbook = WorkBook.Load(stream, "csv");
            WorkSheet ws = workbook.DefaultWorkSheet;
            var records = new List<Product>();

            // Skip header row, iterate through data rows
            for (int i = 1; i < ws.Rows.Count(); i++)
            {
                var row = ws.Rows[i];
                records.Add(new Product
                {
                    Id = row.Columns[0].IntValue,
                    Name = row.Columns[1].StringValue,
                    Price = row.Columns[2].DecimalValue,
                    Quantity = row.Columns[3].IntValue
                });
            }

            return Ok(new
            {
                message = "Import successful",
                count = records.Count,
                data = records
            });
        }
        catch (Exception ex)
        {
            return BadRequest($"Error processing file: {ex.Message}");
        }
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class CsvController : ControllerBase
{
    [HttpPost("upload")]
    public async Task<IActionResult> UploadCsv(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("Please upload a valid CSV file.");

        try
        {
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Position = 0;

            WorkBook workbook = WorkBook.Load(stream, "csv");
            WorkSheet ws = workbook.DefaultWorkSheet;
            var records = new List<Product>();

            // Skip header row, iterate through data rows
            for (int i = 1; i < ws.Rows.Count(); i++)
            {
                var row = ws.Rows[i];
                records.Add(new Product
                {
                    Id = row.Columns[0].IntValue,
                    Name = row.Columns[1].StringValue,
                    Price = row.Columns[2].DecimalValue,
                    Quantity = row.Columns[3].IntValue
                });
            }

            return Ok(new
            {
                message = "Import successful",
                count = records.Count,
                data = records
            });
        }
        catch (Exception ex)
        {
            return BadRequest($"Error processing file: {ex.Message}");
        }
    }
}
Imports IronXL
Imports Microsoft.AspNetCore.Mvc
Imports System.IO
Imports System.Threading.Tasks

<Route("api/[controller]")>
<ApiController>
Public Class CsvController
    Inherits ControllerBase

    <HttpPost("upload")>
    Public Async Function UploadCsv(file As IFormFile) As Task(Of IActionResult)
        If file Is Nothing OrElse file.Length = 0 Then
            Return BadRequest("Please upload a valid CSV file.")
        End If

        Try
            Using stream As New MemoryStream()
                Await file.CopyToAsync(stream)
                stream.Position = 0

                Dim workbook As WorkBook = WorkBook.Load(stream, "csv")
                Dim ws As WorkSheet = workbook.DefaultWorkSheet
                Dim records As New List(Of Product)()

                ' Skip header row, iterate through data rows
                For i As Integer = 1 To ws.Rows.Count() - 1
                    Dim row = ws.Rows(i)
                    records.Add(New Product With {
                        .Id = row.Columns(0).IntValue,
                        .Name = row.Columns(1).StringValue,
                        .Price = row.Columns(2).DecimalValue,
                        .Quantity = row.Columns(3).IntValue
                    })
                Next

                Return Ok(New With {
                    .message = "Import successful",
                    .count = records.Count,
                    .data = records
                })
            End Using
        Catch ex As Exception
            Return BadRequest($"Error processing file: {ex.Message}")
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

Uç Nokta ve Çok Parçalı Formu Yapılandırma

[HttpPost("upload")] işleminin dosya yüklemelerini kabul etmesi için projenin çok parçalı form verilerini desteklemesi gerekir. Minimal bir API kurulumunda Program.cs içinde, builder.Services.AddControllers() ve app.MapControllers() çağrısı yaptığınızdan emin olun. Uç nokta /api/csv/upload adresinde erişilebilir hale gelir.

Tarayıcı formundan test ederken, formun enctype niteliğini multipart/form-data ayarlayın ve bir dosya giriş elemanı kullanın. Postman gibi API istemcileri için, istek gövdesinde "form-data" seçin, file adında bir anahtar ekleyin ve CSV dosyasını ekleyin. Kontrolör, kayıt sayısını ve ayrıştırılan veri dizisini içeren bir JSON nesnesi döndürür, bu da istemci tarafı JavaScript'in hemen tüketebileceği bir veridir.

ASP CSV İçe Aktarma: Tüm C# Geliştirici Kılavuzu: Görüntü 2 - İçe aktarılan CSV dosyasından okunan verilerle başarılı çıktı

Çözümlemeden Önce Dosya Türünü Doğrulama

Akışı IronXL'ye geçirmeden önce, CSV olmayan yüklemeleri reddetmek için dosya uzantısını doğrulayın:

var extension = Path.GetExtension(file.FileName).ToLowerInvariant();
if (extension != ".csv" && extension != ".txt")
    return BadRequest("Only CSV files are accepted.");
var extension = Path.GetExtension(file.FileName).ToLowerInvariant();
if (extension != ".csv" && extension != ".txt")
    return BadRequest("Only CSV files are accepted.");
Dim extension As String = Path.GetExtension(file.FileName).ToLowerInvariant()
If extension <> ".csv" AndAlso extension <> ".txt" Then
    Return BadRequest("Only CSV files are accepted.")
End If
$vbLabelText   $csharpLabel

Bu kontrol, biçimsiz ikili verilerin çözümleyiciye ulaşmasını engeller ve API tüketicilerine net bir hata mesajı sağlar. Daha sıkı uygulama için file.ContentType kullanarak MIME türünü kontrol etmek için bu doğrulamayı genişletebilirsiniz.

CSV Verilerini Veritabanına Nasıl Kaydedersiniz?

CSV dosyalarını türlü nesnelere çözümlerken genellikle kayıtları bir veritabanına kaydedersiniz. Aşağıdaki örnek, toplu eklemeler için Entity Framework Core'un AddRangeAsync kullanarak servis katmanı desenini genişletir:

using IronXL;

public class CsvImportService
{
    private readonly AppDbContext _context;

    public CsvImportService(AppDbContext context)
    {
        _context = context;
    }

    public async Task<int> ImportProductsAsync(Stream csvStream)
    {
        WorkBook workbook = WorkBook.LoadCSV(csvStream);
        WorkSheet ws = workbook.DefaultWorkSheet;
        var products = new List<Product>();

        foreach (var row in ws.Rows.Skip(1))
        {
            products.Add(new Product
            {
                Id = row.Columns[0].IntValue,
                Name = row.Columns[1].StringValue,
                Price = row.Columns[2].DecimalValue,
                Quantity = row.Columns[3].IntValue
            });
        }

        await _context.Products.AddRangeAsync(products);
        return await _context.SaveChangesAsync();
    }
}
using IronXL;

public class CsvImportService
{
    private readonly AppDbContext _context;

    public CsvImportService(AppDbContext context)
    {
        _context = context;
    }

    public async Task<int> ImportProductsAsync(Stream csvStream)
    {
        WorkBook workbook = WorkBook.LoadCSV(csvStream);
        WorkSheet ws = workbook.DefaultWorkSheet;
        var products = new List<Product>();

        foreach (var row in ws.Rows.Skip(1))
        {
            products.Add(new Product
            {
                Id = row.Columns[0].IntValue,
                Name = row.Columns[1].StringValue,
                Price = row.Columns[2].DecimalValue,
                Quantity = row.Columns[3].IntValue
            });
        }

        await _context.Products.AddRangeAsync(products);
        return await _context.SaveChangesAsync();
    }
}
Imports IronXL

Public Class CsvImportService
    Private ReadOnly _context As AppDbContext

    Public Sub New(context As AppDbContext)
        _context = context
    End Sub

    Public Async Function ImportProductsAsync(csvStream As Stream) As Task(Of Integer)
        Dim workbook As WorkBook = WorkBook.LoadCSV(csvStream)
        Dim ws As WorkSheet = workbook.DefaultWorkSheet
        Dim products As New List(Of Product)()

        For Each row In ws.Rows.Skip(1)
            products.Add(New Product With {
                .Id = row.Columns(0).IntValue,
                .Name = row.Columns(1).StringValue,
                .Price = row.Columns(2).DecimalValue,
                .Quantity = row.Columns(3).IntValue
            })
        Next

        Await _context.Products.AddRangeAsync(products)
        Return Await _context.SaveChangesAsync()
    End Function
End Class
$vbLabelText   $csharpLabel

Hizmeti Bağımlılık Eklemeye Bağlama

Kontrolör, kurucu enjekte etme yoluyla istekte bulunabilmesi için CsvImportService'yi Program.cs içinde kaydedin:

builder.Services.AddScoped<CsvImportService>();
builder.Services.AddScoped<CsvImportService>();
$vbLabelText   $csharpLabel

Daha sonra kontrolör yapıcısını hizmeti kabul edecek şekilde güncelleyin ve listeyi satır içi olarak oluşturmak yerine ImportProductsAsync çağrısı yapın. Bu ayrım, kontrolör işlemlerini ince tutar ve veri erişim mantığını test edilebilir bir servis sınıfına taşır. Entity Framework Core, AddRangeAsync çağrısını toplu olarak tek bir INSERT ifadesine dönüştürür, bu da binlerce satır içeren CSV dosyaları için iyi bir performans sergiler.

Çok büyük içe aktarmalar (on binlerce satır) için, veritabanına yapılan yuvarlak seyahatleri azaltmak amacıyla EF Core'un Toplu Uzantılarını veya ham SQL BULK INSERT ifadesini kullanmayı düşünün.

IronXL kullanarak Verileri CSV'ye Nasıl Dışa Aktarabilirsiniz?

IronXL sadece CSV dosyalarını okumakla sınırlı değildir -- aynı zamanda yazar. SaveAsCsv yöntemi, herhangi bir çalışma sayfasını CSV dosyasına aktarır, bu da raporlar oluşturmak veya verileri alt sistemlere göndermek için faydalıdır:

using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLS);
WorkSheet ws = workbook.DefaultWorkSheet;

// Write headers
ws["A1"].Value = "Id";
ws["B1"].Value = "Name";
ws["C1"].Value = "Price";

// Write data rows
ws["A2"].Value = 1;
ws["B2"].Value = "Widget A";
ws["C2"].Value = 9.99;

ws["A3"].Value = 2;
ws["B3"].Value = "Widget B";
ws["C3"].Value = 14.49;

// Save as CSV
workbook.SaveAsCsv("export.csv");
Console.WriteLine("CSV export complete.");
using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLS);
WorkSheet ws = workbook.DefaultWorkSheet;

// Write headers
ws["A1"].Value = "Id";
ws["B1"].Value = "Name";
ws["C1"].Value = "Price";

// Write data rows
ws["A2"].Value = 1;
ws["B2"].Value = "Widget A";
ws["C2"].Value = 9.99;

ws["A3"].Value = 2;
ws["B3"].Value = "Widget B";
ws["C3"].Value = 14.49;

// Save as CSV
workbook.SaveAsCsv("export.csv");
Console.WriteLine("CSV export complete.");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Write headers
ws("A1").Value = "Id"
ws("B1").Value = "Name"
ws("C1").Value = "Price"

' Write data rows
ws("A2").Value = 1
ws("B2").Value = "Widget A"
ws("C2").Value = 9.99

ws("A3").Value = 2
ws("B3").Value = "Widget B"
ws("C3").Value = 14.49

' Save as CSV
workbook.SaveAsCsv("export.csv")
Console.WriteLine("CSV export complete.")
$vbLabelText   $csharpLabel

Dışa aktarılan dosya varsayılan olarak virgül sınırlayıcılar kullanır. İsviçre yerlerinde yaygın olan noktalı virgülle sınırlanmış dosyalar için, SaveAsCsv("export.csv", ";") çağrısı yaparak belirgin bir sınırlayıcı argüman verin. MemoryStream olarak da kaydedebilir ve File(stream, "text/csv", "export.csv") kullanarak bir API uç noktasından dosya indirmesi olarak geri dönebilirsiniz.

Dışa aktarma seçenekleri hakkında tam bir referans için, IronXL kaydetme ve dışa aktarma belgelerine bakın.

Neden IronXL, Manuel CSV Çözümlemesinden Daha İyi Bir Seçenektir?

Manuel CSV çözümleme, tırnak içine alınmış virgülleri içeren değerler, hücre içinde gömülü yeni satırlar, kaçış tırnak işaretleri ve UTF-8 dosyalarının başındaki byte-order işaretleri gibi kenar durumlarına kadar kolay görünür. Özel bir StreamReader döngüsünde bunların hepsini doğru bir şekilde ele almak, önemli testler ve sürekli bakım gerektirir.

IronXL bu durumların hepsini dahili olarak ele alır. İki yaklaşımı karşılaştırmak net avantajlar gösterir:

C#'da CSV Çözümleme için IronXL vs. Manuel StreamReader
Yetenek IronXL Manuel StreamReader
Otomatik ayırıcı algılama Evet Hayır -- elle yapılandırma gerek
Alıntılanmış alan işleme Dahili Özel mantık gerektirir
Tür dönüşümü (int, decimal, DateTime) Yerleşik erişimciler Parse/TryParse çağrılarına ihtiyaç duyar
Çok satırlı hücre değerleri Otomatik olarak ele alınır Doğru şekilde uygulamak zor
BOM yönetimi Otomatik StreamReader yapılandırması gerektirir
Excel format desteği (XLSX, XLS) Aynı API Ayrı bir kütüphane gerektirir
CSV'ye Dışa Aktarım SaveAsCsv yöntemi Ayrı yazma mantığı gerektirir

Çapraz Format Tutarlılığı

IronXL'nin pratik avantajlarından biri, aynı WorkBook.Load ve çalışma sayfası iterasyon deseninin XLSX, XLS, ODS ve CSV dosyaları için de çalışmasıdır. Uygulamanızın kullanıcıdan birden fazla hesap tablosu formatını kabul etmesi gerekiyorsa, çözümleme mantığını değiştirmeden formatlar arasında geçiş yapabilirsiniz. Dosya akışını WorkBook.Load aktarın ve IronXL, dosya imzasına dayanarak formatı otomatik olarak tespit eder.

Bu çapraz format API'si, CSV ve Excel için ayrı uygulamaları korumak yerine tek bir kod yolunu yazmanızı ve test etmenizi sağlar. Desteklenen formatların tam listesi için IronXL desteklenen dosya formatları sayfasına bakın.

Büyük Dosyalar için Performans Değerlendirmeleri

100 MB altındaki CSV dosyaları için, IronXL herhangi bir ayar gerektirmeden iyi bir performans gösterir. Daha büyük dosyalar için, bu stratejileri düşünün:

  • Bellek tahsisini azaltmak için dosyayı doğrudan bir MemoryStream içine kopyalamak yerine bir yoldan yükleyin.
  • İlk ekleme öncesi tüm kayıtları toplamak yerine bir veritabanına eklerken satırları toplu olarak işleyin.
  • Başlık satırını bir Product nesnesi olarak somutlaştırmaktan kaçınmak için ws.Rows.Skip(1) ve LINQ kullanın.

IronXL performans kılavuzu, yüksek hacimli ithalat senaryoları için paralel işleme ve akış modları dahil ek optimizasyonları kapsar.

Sonraki Adımlarınız Neler?

Artık ASP.NET Core'da CSV içe aktarımlarının her aşaması için çalışan bir deseniniz var: kütüphaneyi kurma, dosyaları diske veya yüklenen akışlardan yükleme, satırları türlenmiş model nesnelerine eşleme, kayıtları Entity Framework Core ile veritabanına kaydetme ve gerektiğinde verilerini CSV'ye dışa aktarma.

Bu zeminin üzerine inşa etmek için bu kaynakları keşfedin:

Projenize IronXL'i eklediğinizde, CSV'nin yanında XLSX yüklemeleri için desteği eklemek ek bir kod değişikliği gerektirmez -- aynı WorkBook.Load çağrısı her ikisini de işleyebilir. Bu tutarlılık, uygulama gereksinimleriniz büyüdükçe içe aktarma uç noktanızın özellik setini kademeli olarak genişletebileceğiniz anlamına gelir.

Sıkça Sorulan Sorular

Bir ASP.NET Core uygulamasında CSV dosyalarını nasıl içe aktarabilirim?

CSV dosyalarını ASP.NET Core uygulamasında IronXL kullanarak içe aktarabilirsiniz; dosya yüklemelerini yönetmek, CSV verilerini ayrıştırmak ve bunları model sınıf nesnelerine eşleştirmek için. IronXL, bu görevleri verimli bir şekilde kolaylaştırmak için bir API sağlar.

C#'ta CSV içe aktarma için IronXL kullanmanın faydaları nelerdir?

IronXL, CSV dosyalarını içe aktarma sürecini basitleştiren bir API sunar. Verileri kolayca ayrıştırma, modellere eşleştirme ve kayıtları JSON'a dönüştürme imkanı tanır, bu da onu veri odaklı uygulamalar için ideal bir seçim yapar.

IronXL, CSV verilerini model sınıf nesnelerine ayrıştırabilir mi?

Evet, IronXL, CSV verilerini model sınıf nesnelerine ayrıştırabilir, bu da yapılandırılmış verilerle .NET uygulamanız içinde verimli bir şekilde çalışmanıza olanak tanır.

IronXL, CSV dosyalarını içe aktarırken veritabanı entegrasyonuna nasıl yardımcı olur?

IronXL, CSV verilerini ayrıştırmanıza ve bunları veritabanınıza kolayca eklenebilecek veya güncellenebilecek model nesnelere eşleştirmenize olanak tanıyarak veritabanı entegrasyonuna yardımcı olur.

IronXL kullanarak CSV kayıtlarını JSON olarak geri döndürmek mümkün mü?

Evet, IronXL ile CSV kayıtlarını JSON formatına dönüştürebilirsiniz, bu da web API'leri oluşturmada veya ön uç uygulamalarla entegrasyonda kullanışlıdır.

IronXL, CSV dışında hangi dosya formatlarını işleyebilir?

CSV'ye ek olarak, IronXL başka birçok Excel dosya formatını da işleyebilir; örneğin XLSX, XLS ve diğerleri, yani farklı elektronik tablo gereksinimleri için çok yönlülük sağlar.

IronXL, büyük CSV dosyası içe aktarmalarını destekliyor mu?

IronXL, veri odaklı uygulamalarda performans ve güvenilirliği garanti edecek şekilde büyük CSV dosyası içe aktarmalarını etkili bir şekilde yönetmek için tasarlanmıştır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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