IRONSOFTWAREHOME
DIĞER BILEŞENLERLE KARŞILAŞTIRIN

ASP.NET Excel'e Dışa Aktarma: IronXL vs ClosedXML vs EPPlus Karşılaştırması

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

Excel'e veri aktarmak, ASP.NET Core web uygulamalarında standart bir gerekliliktir. Satış raporları oluşturuyor, kullanıcılara GridView içeriklerini indirme olanağı sunuyor veya veritabanı sorgularından CSV dosyaları üretiyor olun, seçtiğiniz yaklaşım, sonuç dosyasının Microsoft Excel'de temiz açılıp açılmayacağını veya format uyarılarını tetikleyip tetiklemeyeceğini belirler. Bu makale, C# geliştiricileri için mevcut en yaygın Excel dışa aktarma yöntemlerini karşılaştırır: geleneksel HTML tabanlı akış ve IronXL, ClosedXML ve EPPlus gibi modern kütüphane çözümleri - böylece projeniz için doğru aracı seçebilirsiniz.

Ücretsiz denemenizi başlatın ve IronXL'nin ASP.NET Core uygulamalarında Excel dosyası oluşturmayı nasıl ele aldığını görün.

ASP.NET Core'da Veriyi Excel'e Aktarmanın Yaygın Yöntemleri Nelerdir?

ASP.NET Core geliştiricilerinin Excel dışa aktarma fonksiyonu eklerken birden fazla yolu vardır. Her yaklaşım, çıktı dosyasının kalitesinde, bunu uygulamak için gereken çabada ve ticari projeler için izin şekillerinde farklılık gösterir.

Geleneksel MIME türü akışı en eski tekniktir. Sunucu, yanıtın Content-Type başlığını application/vnd.ms-excel olarak ayarlar ve bir HTML tablosunu çıktı akışına yazar. Tarayıcı bunu Excel indirmesi olarak yorumlar, ancak dosya gerçek hesap tablosu verileri yerine HTML işaretleme dosyasını içerir. Microsoft Excel, uyumsuzluğu fark eder ve dosyayı açmadan önce bir format uyarısı gösterir. Bu yöntem formülleri, tipli sütunları veya uygun hücre formatlamaları destekleyemez.

Kütüphane tabanlı çözümler, Microsoft tarafından tanımlanan Open XML formatını kullanarak gerçek XLSX dosyaları oluşturan bir NuGet paketi ekler. Seçenekler arasında IronXL, ClosedXML ve EPPlus bulunmaktadır. Üçü de uyarı vermeden açılan geçerli Excel dosyaları üretir, hücre düzeyinde formatlama destekler ve .NET Core ile çalışırlar. Bu yaklaşımların tümü tarafından kullanılan ASP.NET Core mekanizmalarının altında yatan resmi .NET dökümantasyonu kapsanmıştır.

Aşağıdaki tablo, temel farkları özetlemektedir:

Excel dışa aktarma kütüphanesi karşılaştırması: özellik matrisi
ÖzellikMIME Türü / HTMLClosedXMLEPPlusIronXL
Gerçek XLSX çıktısıHayırEvetEvetEvet
CSV dosya desteğiElleSınırlıSınırlıYerel
Excel uyarısı olmadan açılırHayırEvetEvetEvet
Formül desteğiHayırEvetEvetEvet
JSON ve XML dışa aktarmaHayırHayırHayırEvet
Ticari lisansUygulanamazMITPolyformTicari
.NET Core desteğiEvetEvetEvetEvet

IronXL'i Bir ASP.NET Core Projesinde Nasıl Kurarsınız?

Herhangi bir dışa aktarma kodu yazmadan önce, IronXL'i projenize NuGet Paket Yöneticisi veya .NET CLI aracılığıyla ekleyin. IronXL, Microsoft Office veya COM interop'a bağımlı değildir, bu nedenle .NET tarafından desteklenen herhangi bir işletim sisteminde kurulum basittir.

dotnet add package IronXL.Excel

Alternatif olarak, Visual Studio'daki Paket Yöneticisi Konsolunu kullanın:

PM > Install-Package IronXL.Excel

Paket yüklendikten sonra, Excel dosyaları oluşturması gereken herhangi bir kontrolcüye veya hizmet sınıfına using IronXL; ekleyin. Temel dışa aktarma senaryoları için ek bir yapılandırma gerekmemektedir. Lisanslama ve dağıtım seçenekleri için IronXL lisans sayfasını ziyaret edin.

Geleneksel GridView Dışa Aktarma Yaklaşımı Nasıl Çalışır?

Eski WebForms ve bazı eski MVC modellerinde, geliştiriciler GridView verilerini HTML olarak render ederek ve yanıltıcı bir İçerik Türü başlığı ile tarayıcıya akıtarak dışa aktardılar. Uygulama, dosya adını ayarlamak için Response.AddHeader çağırır ve HTML çıktısını doğrudan yazar.

// Traditional approach -- exports HTML disguised as Excel
public void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
    StringWriter stringWriter = new StringWriter();
    HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
    // Render grid content as HTML
    DataGrid1.RenderControl(htmlTextWriter);
    Response.Write(stringWriter.ToString());
    Response.End();
}

public override void VerifyRenderingInServerForm(Control control)
{
    // Required to prevent server form rendering errors
}

Eski Çıktı

ASP.NET Excel'e Aktarma: C# Geliştiricileri İçin En İyi Araç Karşılaştırması: Görsel 1 - Eski Excel aktarım çıktısı

Bu yöntem, sunucu tarafı doğrulamasını atlamak için VerifyRenderingInServerForm'i geçersiz kılmayı gerektirir. Oluşturulan dosya, gerçek hesap tablosu verileri yerine HTML içerir, bu nedenle kullanıcı açtığında Microsoft Excel bir format uyarısı görüntüler. Çıktı, çalışma sayfası formüllerini, tipli veri sütunlarını veya hücre düzeyinde formatlamayı destekleyemez. Yeni ASP.NET Core geliştirmelerinde, bu desenin yerine uygun bir Excel kütüphanesi tercih edilmelidir.

IronXL, ASP.NET Core'da Excel Dosyası Oluşturmayı Nasıl Basitleştirir?

IronXL, Microsoft Office veya COM interop gerektirmeyen gerçek XLSX dosyaları oluşturmak için bir API sağlar. Kütüphane, çalışma kitabı nesnelerini tamamen yönetilen kodda oluşturur, böylece ilave bağımlılıklar olmadan Linux, macOS ve Windows üzerinde çalışır.

Aşağıdaki örnek, bir çalışma kitabı oluşturur, bir çalışma sayfasını satış verileriyle doldurur, başlık satırına kalın formatlama uygular ve dosyayı tarayıcıya aktarır:

using IronXL;
using Microsoft.AspNetCore.Mvc;

public class ExportController : Controller
{
    [HttpPost]
    public IActionResult ExportReport()
    {
        // Create workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Add header row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Quantity";
        worksheet["C1"].Value = "Revenue";

        // Populate data rows
        worksheet["A2"].Value = "Widget A";
        worksheet["B2"].Value = 150;
        worksheet["C2"].Value = 4500.00;
        worksheet["A3"].Value = "Widget B";
        worksheet["B3"].Value = 230;
        worksheet["C3"].Value = 6900.00;

        // Apply bold formatting to headers
        var headerRange = worksheet["A1:C1"];
        headerRange.Style.Font.Bold = true;

        // Stream file to browser
        byte[] fileBytes = workbook.ToByteArray();
        string filename = $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx";
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            filename);
    }
}

IronXL Çıktısı

ASP.NET Excel'e Aktarma: C# Geliştiricileri İçin En İyi Araç Karşılaştırması: Görsel 2 - IronXL Excel'e aktarım çıktısı

WorkBook.Create bellekte yeni bir Excel belgesi oluşturur. CreateWorkSheet, kullanıcıların Excel penceresinin altında gördüğü adlandırılmış bir sekme ekler. Hücre değerleri, çoğu C# geliştiricisinin okunabilir ve sürdürülebilir bulduğu Excel tarzı aralık gösterimi ("A1", "B2") kullanılarak atanır.

ToByteArray() yöntemi, bitmiş iş kitabını byte dizisine dönüştürür, bu da ASP.NET Core File() yanıt yöntemiyle doğrudan kullanıcının tarayıcısına doğru MIME türü ve içerik eğilimi başlıklarıyla akıtılır. İndirilen dosya, Excel'de herhangi bir format uyarısı olmadan açılır.

IronXL ayrıca, SaveAsCsv yöntemi aracılığıyla CSV formatına dışa aktarmayı da destekler:

// Export as CSV instead of XLSX
workbook.SaveAsCsv("output.csv");

Çalışma sayfası verilerini JSON veya XML olarak dışa aktarmanız gerektiğinde, IronXL, ClosedXML veya EPPlus'da mevcut olmayan SaveAsJson ve SaveAsXml yöntemlerini sunar. Ek örüntüler için IronXL kod örnekleri ve API referansı sayfalarında bulabilirsiniz.

IronXL, DataTable ve Veritabanı Entegrasyonunu Nasıl Ele Alır?

Birçok ASP.NET Core uygulaması, veri aktarmadan önce SQL Server veya başka bir ilişkisel veritabanından veri getirir. IronXL, bir DataTable'i doğrudan bir çalışma sayfasına yüklemek için birinci sınıf destek sunar, satırları manuel olarak yinelemek gereksinimini ortadan kaldırır.

Aşağıdaki örnek, ADO.NET kullanarak bir veritabanını sorgular ve ortaya çıkan DataTable'dan bir Excel çalışma sayfası doldurur:

using IronXL;
using System.Data;
using System.Data.SqlClient;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    private readonly string _connectionString;

    public ReportController(IConfiguration config)
    {
        _connectionString = config.GetConnectionString("DefaultConnection");
    }

    [HttpGet]
    public IActionResult DownloadReport()
    {
        DataTable table = new DataTable();

        using (SqlConnection connection = new SqlConnection(_connectionString))
        {
            string query = "SELECT OrderId, CustomerName, Total, OrderDate FROM Orders";
            using SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            adapter.Fill(table);
        }

        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Orders");

        // Write column headers from DataTable schema
        for (int col = 0; col < table.Columns.Count; col++)
        {
            worksheet[0, col].Value = table.Columns[col].ColumnName;
        }

        // Write data rows
        for (int row = 0; row < table.Rows.Count; row++)
        {
            for (int col = 0; col < table.Columns.Count; col++)
            {
                worksheet[row + 1, col].Value = table.Rows[row][col].ToString();
            }
        }

        byte[] fileBytes = workbook.ToByteArray();
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "Orders.xlsx");
    }
}

Bu model, kontrolörün sade ve test edilebilir olmasını sağlar. Veritabanı sorgusu ve çalışma kitabının oluşturulması açıkça ayrıldığından, veri kaynağını değiştirmek veya özet veriler için ek çalışma sayfaları eklemek kolaylaştırılmıştır. Varolan Excel dosyalarının DataTable'e nasıl okunacağı konusunda rehberlik için, Excel dosyalarını okuma üzerine IronXL kılavuzu'na bakın.

ClosedXML ve EPPlus Nasıl Karşılaştırılır?

ClosedXML, Microsoft'un Open XML SDK'sını erişilebilir bir API ile sarar. NuGet üzerinden kurun:

Install-Package ClosedXML
SHELL

Aşağıdaki örnek, tipik bir ClosedXML dışa aktarma eylemi gösteriyor:

using ClosedXML.Excel;
using Microsoft.AspNetCore.Mvc;

public class ExportController : Controller
{
    [HttpGet]
    public IActionResult ExportWithClosedXML()
    {
        using var workbook = new XLWorkbook();
        var worksheet = workbook.AddWorksheet("Data");
        worksheet.Cell(1, 1).Value = "Name";
        worksheet.Cell(1, 2).Value = "Amount";
        worksheet.Cell(2, 1).Value = "Alpha";
        worksheet.Cell(2, 2).Value = 1200;

        using var stream = new MemoryStream();
        workbook.SaveAs(stream);
        return File(stream.ToArray(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx");
    }
}

ClosedXML Çıktısı

ASP.NET Excel'e Aktarma: C# Geliştiricileri İçin En İyi Araç Karşılaştırması: Görsel 3 - ClosedXML Excel'e aktarım çıktısı

ClosedXML, IronXL tarafından kullanılan aralık dize gösterimi yerine, tamsayı tabanlı hücre adresleme (Cell(row, col)) kullanır. Her iki yaklaşım da geçerli XLSX dosyaları üretir. ClosedXML, MIT lisansı altında yayımlanmıştır ve bu sayede ticari lisanslama kaygısı olmadan açık kaynak projeleri için uygundur. ClosedXML GitHub deposu, sorun takibi ve topluluk katkılı örnekler sağlar.

EPPlus, ticari olmayan kullanım için Polyform Ticari Olmayan lisansı altında benzer işlevsellik sunar ve üretim dağıtımları için ticari lisans gereklidir. EPPlus'ı ticari bir üründe kullanmadan önce EPPlus lisans genel bakışına danışın. EPPlus ve ClosedXML her ikisi de geçerli Excel dosyaları üretir, ancak IronXL'nin sunduğu doğal CSV, JSON veya XML dışa aktarma imkanı sunmazlar.

Aşağıdaki tablo, ASP.NET Core uygulamaları için üretime yönelik spesifik yetenekleri karşılaştırır:

Üretime yönelik ASP.NET Core projeleri için detaylı yetenek karşılaştırması
YetenekIronXLClosedXMLEPPlus
CSV, JSON ve XML dışa aktarmaYerelMevcut değilMevcut değil
DataTable entegrasyonuEvetEvetEvet
Teknik destekLisans ile birlikte dahildirYalnızca toplulukÜcretli katman
Microsoft Office bağımlılığıNoneNoneNone
Çok platformlu (.NET, Linux'ta)EvetEvetEvet
Lisans türüTicariMITPolyform / Ticari

Projeniz İçin Doğru Kütüphaneyi Nasıl Seçersiniz?

Doğru Excel dışa aktarma kütüphanesini seçmek, gerekli çıkış formatlarına, projenizin lisanslama kısıtlamalarına ve profesyonel destek gereksinimlerinize bağlıdır.

IronXL'i seçin, uygulamanız çoklu format çıkışı (XLSX, CSV, JSON, XML) gerekiyorsa, garantili bir destek kanalı gerektiren ticari bir ürün oluşturuyorsanız veya formül değerlendirmesi, hücre stilini veya grafik oluşturma gibi gelişmiş Excel özellikleri gerekiyorsa. IronXL'nin belgeleri her API yüzeyini ayrıntılı bir şekilde kapsar ve destek ekibi, lisans sahiplerine doğrudan yanıt verir. Ek örüntüler ve rehberlik için IronXL blogunu gözden geçirin.

ClosedXML'i seçin, projeniz açık kaynak veya ticari olmayan ve yalnızca XLSX çıktı gerekiyorsa. MIT lisansı, yeniden dağıtım konusunda hiçbir kısıtlama getirmez ve API, topluluk kaynakları aracılığıyla iyi belgelenmiştir.

EPPlus'u seçin mevcut kod tabanı zaten EPPlus kullanıyorsa ve başka bir kütüphaneye geçmek ticari lisans satın almaktan daha pahalıya mal olacaksa.

IronXL'in alternatiflerine karşı değerlendiren takımlar için, IronXL deneme lisansı, satın almadan önce tam özellikli test yapma imkanı tanır. Excel dosyalarını okuma ve yazma için ek kod örnekleri IronXL örnek sayfasında mevcuttur.

Sonraki Adımlarınız Neler?

ARTI UTILS, uygulama teFIN, plan veya planlar ile AceInformatica'nın, güç GV&U'dan sağlanan bilgiler ve TIL tarafından yapılan ödeme hizmetleri ve işlevlerini Apple en iyi bTIL'e özel olarak geliştirilmiştir.

  • İlk iş kitabınızı oluşturmak için dotnet add package IronXL.Excel kullanarak IronXL'i yükleyin ve başlarken kılavuzunu tamamlayın.
  • Kod kalıplarını karşılaştırın, veritabanı dışa aktarma, çoklu sayfalı çalışma kitapları veya stilize raporlar gibi kullanım durumunuza uyan senaryolar için IronXL örnekler sayfasını inceleyin.
  • Lisanslamayı değerlendirin, geliştirme, test ve üretime yönelik dağıtım seçeneklerini anlamak için IronXL lisans sayfasını ziyaret edin.
  • Uygulamanız aynı kod tabanından birden fazla formatta veri dışa aktarması gerekiyorsa, SaveAsCsv, SaveAsJson ve SaveAsXml yöntemlerini test ederek ek formatları keşfedin.
  • Çözümünüzdeki mevcut herhangi bir Response.ContentType = "application/vnd.ms-excel" deseni belirleyerek ve onları IronXL iş kitapları oluşturma ile değiştirerek eski kodlardan geçiş yapın, kullanıcılarınız için format uyarılarını ortadan kaldırın.

Üretim dağıtımları için, profesyonel desteğin kilidini açmak ve IronXL lisans şartlarına uyumu sağlamak üzere bir lisans satın alın.

İlk Adım:
arrow pointer
Lütfen dikkate alın: ClosedXML ve EPPlus, ilgili sahiplerinin tescilli ticari markalarıdır. Bu site, ClosedXML veya EPPlus Software ile bağlantılı değildir, onaylanmamıştır veya sponsor olunmamıştır. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadı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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez