Altbilgi içeriğine atla
IRONXL KULLANARAK

ASP .NET C# içinde Excel Dosyası İndirin: Verileri XLSX, CSV ve Daha Fazlasına Aktarın

Tablo dışa aktarma işlevselliği, kurumsal web uygulamaları için yaygın bir gereksinimdir, ancak bu dosyaların el ile oluşturulması ve teslim edilmesi genellikle önemli teknik karmaşıklıklar ortaya çıkarır. Geliştiriciler, tutarlı tarayıcı davranışını sağlamak ve veri bozulmasını önlemek için sık sık MemoryStream yönetiminin incelikleriyle karşılaşmalı ve doğru HTTP içerik-dağıtım başlıklarını yapılandırmalıdır.

Bu makale, IronXL kütüphanesini kullanarak, ASP.NET C# MVC denetleyicilerinde Excel dosyası oluşturma ve indirme ile ilgili gerekli her şeyi ele alır.XLSXformatında gerçek Excel dosyalarına veri dışa aktarımı,CSVdosyalarının akışını, yeniden dışa aktarma için yüklemelerin dönüştürülmesini ve tüm bunları Microsoft Office yüklemeden veya Excel Interop'a ihtiyaç duymadan tarayıcıya dosya indirmeleri olarak geri dönüştürmeyi kaplayacağız. IronXL NuGet paketini yükleyin ve kaynak kodu örnekleriyle birlikte takip etmek için ücretsiz bir deneme başlatın.

NuGet NuGet ile Yükle

PM >  Install-Package IronXl.Excel

IronXL üzerine NuGet için hızlı bir kurulum kontrol edin. 10 milyondan fazla indirme ile C# ile PDF geliştirmesini dönüştürüyor. DLL de indirebilirsiniz.

Bir Kontrolden Excel Dosyası Nasıl Oluşturulur ve İndirilir?

ASP.NET Core senaryosundaki herhangi bir Excel dosyası indirme için temel kalıp üç adımı içerir: çalışma kitabını oluşturma, bir akışa yazma ve akışı bir dosya yanıtı olarak döndürme. Aşağıdaki kod, sıfırdan birXLSXdosyası oluşturan ve tarayıcıya gönderilen bir MVC denetleyici eylemini gösterir.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
    // Export employee data as a downloadable Excel file
    public IActionResult DownloadExcel()
    {
        // Create a new workbook and worksheet
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Add header row with column names
        worksheet["A1"].Value = "Name";
        worksheet["B1"].Value = "Department";
        worksheet["C1"].Value = "Salary";
        // Populate cells with data values
        worksheet["A2"].Value = "Alice Torres";
        worksheet["B2"].Value = "Engineering";
        worksheet["C2"].Value = 95000;
        worksheet["A3"].Value = "James Park";
        worksheet["B3"].Value = "Marketing";
        worksheet["C3"].Value = 78000;
        // Export workbook to a MemoryStream for download
        var stream = workbook.ToStream();
        string filename = "Employees.xlsx";
        var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        // Return file to the browser with content disposition attachment
        return File(stream, content, filename);
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
    // Export employee data as a downloadable Excel file
    public IActionResult DownloadExcel()
    {
        // Create a new workbook and worksheet
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Add header row with column names
        worksheet["A1"].Value = "Name";
        worksheet["B1"].Value = "Department";
        worksheet["C1"].Value = "Salary";
        // Populate cells with data values
        worksheet["A2"].Value = "Alice Torres";
        worksheet["B2"].Value = "Engineering";
        worksheet["C2"].Value = 95000;
        worksheet["A3"].Value = "James Park";
        worksheet["B3"].Value = "Marketing";
        worksheet["C3"].Value = 78000;
        // Export workbook to a MemoryStream for download
        var stream = workbook.ToStream();
        string filename = "Employees.xlsx";
        var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        // Return file to the browser with content disposition attachment
        return File(stream, content, filename);
    }
}
Imports IronXL
Imports Microsoft.AspNetCore.Mvc

Public Class ReportController
    Inherits Controller

    ' Export employee data as a downloadable Excel file
    Public Function DownloadExcel() As IActionResult
        ' Create a new workbook and worksheet
        Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim worksheet = workbook.CreateWorkSheet("Employees")
        ' Add header row with column names
        worksheet("A1").Value = "Name"
        worksheet("B1").Value = "Department"
        worksheet("C1").Value = "Salary"
        ' Populate cells with data values
        worksheet("A2").Value = "Alice Torres"
        worksheet("B2").Value = "Engineering"
        worksheet("C2").Value = 95000
        worksheet("A3").Value = "James Park"
        worksheet("B3").Value = "Marketing"
        worksheet("C3").Value = 78000
        ' Export workbook to a MemoryStream for download
        Dim stream = workbook.ToStream()
        Dim filename As String = "Employees.xlsx"
        Dim content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        ' Return file to the browser with content disposition attachment
        Return File(stream, content, filename)
    End Function
End Class
$vbLabelText   $csharpLabel

Excel Dosya Çıkışı

ASP .NET C#'de Excel Dosyasını İndir: Verileri XLSX,CSVve Daha Fazlasına Aktarın: Resim 1 - ASP .NET C#'de Excel dosyasını indirmek için örnek çıktı

WorkBook.Create metodu yeni bir Excel belgesi oluşturur ve CreateWorkSheet ilk çalışma sayfasını ekler. Hücrelere değerler girdikten sonra, ToStream metodu tüm çalışma kitabını bir MemoryStream haline dönüştürür, geçici dosyalar diske dokunmaz. Denetleyici üzerindeki File() dönüş yöntemi içerik dağıtım başlığını ek ekleme olarak ayarlar, bu da tarayıcıya dosyayı indirilmesini değil, render etmeye çalışılmasını söyler. Üçüncü parametre, dosya adının kullanıcının indirme diyalog kutusunda nasıl görüneceğini kontrol eder.

Bu public IActionResult kalıbı .NET Framework ve ASP.NET Core projelerinde benzer şekilde çalışır, web uygulamalarının Excel'e veri aktarımı yapması gerektiğinde tercihe edilen yaklaşım haline getirir.

Veritabanı Verileri İndirilebilir Bir Elektronik Tabloya Nasıl Dışa Aktarılır?

Gerçek dünya senaryolarının çoğu, sabit kodlanmış değerler yerine bir veritabanı tablosundan veri dışa aktarmayı içerir. Bu kalıp aynı kalır, veriyi sorgulayın, çalışma sayfalarını doldurun ve dosyayı döndürün. İşte bir veritabanından kayıtları çekip bir Excel belgesine yazma işlemini simüle eden bir örnek.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class DataExportController : Controller
{
    // Export database records to an xlsx file for download
    public IActionResult ExportDatabaseReport()
    {
        // Simulate a database query returning order records
        var orders = new[]
        {
            new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m },
            new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m },
            new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m },
        };
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Orders");
        // Write headers
        worksheet["A1"].Value = "Order ID";
        worksheet["B1"].Value = "Customer";
        worksheet["C1"].Value = "Total";
        // Write each row of data from the query results
        for (int i = 0; i < orders.Length; i++)
        {
            int row = i + 2;
            worksheet[$"A{row}"].Value = orders[i].OrderId;
            worksheet[$"B{row}"].Value = orders[i].Customer;
            worksheet[$"C{row}"].Value = orders[i].Total;
        }
        var stream = workbook.ToStream();
        string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx";
        return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;
public class DataExportController : Controller
{
    // Export database records to an xlsx file for download
    public IActionResult ExportDatabaseReport()
    {
        // Simulate a database query returning order records
        var orders = new[]
        {
            new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m },
            new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m },
            new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m },
        };
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Orders");
        // Write headers
        worksheet["A1"].Value = "Order ID";
        worksheet["B1"].Value = "Customer";
        worksheet["C1"].Value = "Total";
        // Write each row of data from the query results
        for (int i = 0; i < orders.Length; i++)
        {
            int row = i + 2;
            worksheet[$"A{row}"].Value = orders[i].OrderId;
            worksheet[$"B{row}"].Value = orders[i].Customer;
            worksheet[$"C{row}"].Value = orders[i].Total;
        }
        var stream = workbook.ToStream();
        string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx";
        return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
    }
}
Imports IronXL
Imports Microsoft.AspNetCore.Mvc

Public Class DataExportController
    Inherits Controller

    ' Export database records to an xlsx file for download
    Public Function ExportDatabaseReport() As IActionResult
        ' Simulate a database query returning order records
        Dim orders = New() {
            New With {.OrderId = 1001, .Customer = "Acme Corp", .Total = 4500.0D},
            New With {.OrderId = 1002, .Customer = "Globex Inc", .Total = 12300.5D},
            New With {.OrderId = 1003, .Customer = "Initech LLC", .Total = 890.75D}
        }
        Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim worksheet = workbook.CreateWorkSheet("Orders")
        ' Write headers
        worksheet("A1").Value = "Order ID"
        worksheet("B1").Value = "Customer"
        worksheet("C1").Value = "Total"
        ' Write each row of data from the query results
        For i As Integer = 0 To orders.Length - 1
            Dim row As Integer = i + 2
            worksheet($"A{row}").Value = orders(i).OrderId
            worksheet($"B{row}").Value = orders(i).Customer
            worksheet($"C{row}").Value = orders(i).Total
        Next
        Dim stream = workbook.ToStream()
        Dim filename As String = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx"
        Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename)
    End Function
End Class
$vbLabelText   $csharpLabel

Çıktı

ASP .NET C#'de Excel Dosyasını İndir: Verileri XLSX,CSVve Daha Fazlasına Aktarın: Resim 2 - Bir veritabanından Excel dosyasına veri aktarmanın çıktısı

Üretimde, siparişler dizisi, bir Entity Framework Core sorgusundan, bir Dapper çağrısından veya bir bağlantı dizgisi aracılığıyla veritabanına bağlanan herhangi bir veri erişim katmanından gelir. Döngü, sonuçlar üzerinden iterasyon yapar ve her değeri, çalışma sayfasındaki doğru hücrelere yazar. Dosya adında bir tarih damgasının nasıl eklendiğine dikkat edin, kullanıcılar dosyaları tekrar tekrar indirirken baş ağrılarından kurtarır.

IronXL'in hücre adresleme sistemi (çalışma sayfası[$"A{row}"]) işleri okunabilir tutar ve WorkBook API sıfırdan geçerli birXLSXdosyası oluşturmanın tüm ağır işini içten halleder. Formüller, stil veya çoklu çalışma sayfası çalışma kitaplarını içeren daha karmaşık senaryolar için aynı yaklaşım düzgün bir şekilde ölçeklenir.

XLSXYerineCSVDosyaları Olarak Veri Nasıl İndirilir?

Bazen hafif birCSVdosyası, özellikle daha az özellikli bir gerçek Excel dosyasına gerek olmayan diğer sistemler, veritabanları veya araçlara veri aktarılırken daha iyi bir seçim olabilir. IronXL, formatlar arasında geçiş yapmayı son derece kolay hale getirir.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class CsvController : Controller
{
    // Export data as aCSVfile download
    public IActionResult ExportCsv()
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Products");
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Price";
        worksheet["A2"].Value = "WDG-001";
        worksheet["B2"].Value = "Widget Pro";
        worksheet["C2"].Value = 29.99;
        // Convert toCSVstream instead of XLSX
        var stream = workbook.ToCsvStream();
        string filename = "Products.csv";
        return File(stream, "text/csv", filename);
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;
public class CsvController : Controller
{
    // Export data as aCSVfile download
    public IActionResult ExportCsv()
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Products");
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Price";
        worksheet["A2"].Value = "WDG-001";
        worksheet["B2"].Value = "Widget Pro";
        worksheet["C2"].Value = 29.99;
        // Convert toCSVstream instead of XLSX
        var stream = workbook.ToCsvStream();
        string filename = "Products.csv";
        return File(stream, "text/csv", filename);
    }
}
Imports IronXL
Imports Microsoft.AspNetCore.Mvc

Public Class CsvController
    Inherits Controller

    ' Export data as a CSV file download
    Public Function ExportCsv() As IActionResult
        Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim worksheet = workbook.CreateWorkSheet("Products")
        worksheet("A1").Value = "SKU"
        worksheet("B1").Value = "Product"
        worksheet("C1").Value = "Price"
        worksheet("A2").Value = "WDG-001"
        worksheet("B2").Value = "Widget Pro"
        worksheet("C2").Value = 29.99
        ' Convert to CSV stream instead of XLSX
        Dim stream = workbook.ToCsvStream()
        Dim filename As String = "Products.csv"
        Return File(stream, "text/csv", filename)
    End Function
End Class
$vbLabelText   $csharpLabel

CSVDosya Çıkışı

ASP .NET C#'de Excel Dosyasını İndir: Verileri XLSX,CSVve Daha Fazlasına Aktarın: Resim 3 - Veriler Excel yerineCSVdosyası olarak indirildi

ToCsvStream metodu, ilk çalışma sayfasınıCSVformatında bir MemoryStream olarak dışa aktarır.CSVdosyaları veri değişimi için harikadır, ancak herhangi bir biçimlendirme, formül veya çoklu sayfa yapısını çıkarır. Bu özelliklere ihtiyaçınız olduğunda, ToStream() veyaToXlsxStream()aracılığıylaXLSXdosya formatında kalın.Formatdönüşümleri hakkında daha derin bir bakış için, elektronik tablo dönüşüm kılavuzuna bakın.

Bir Yükleme Farklı BirFormatOlarak Nasıl Yeniden Dışa Aktarılır?

Yaygın bir web uygulama senaryosu, kullanıcılardan yüklenen dosyaları kabul edip onları başka bir formata dışa aktarmayı içerir, örneğin, birXLSyüklemeyi XLSX'e dönüştürmek veya başlangıçta eski bir formatta kaydedilmiş bir çalışma kitabındanCSVdosyaları üretmek.

public IActionResult ConvertUpload(IFormFile upload)
{
    using var memoryStream = new MemoryStream();
    upload.CopyTo(memoryStream);
    memoryStream.Position = 0;
    // Load uploaded Excel file from the stream
    var workbook = WorkBook.Load(memoryStream);
    // Re-export asXLSXregardless of the original file extension or file type
    var stream = workbook.ToXlsxStream();
    string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx";
    return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
}
public IActionResult ConvertUpload(IFormFile upload)
{
    using var memoryStream = new MemoryStream();
    upload.CopyTo(memoryStream);
    memoryStream.Position = 0;
    // Load uploaded Excel file from the stream
    var workbook = WorkBook.Load(memoryStream);
    // Re-export asXLSXregardless of the original file extension or file type
    var stream = workbook.ToXlsxStream();
    string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx";
    return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
}
Imports Microsoft.AspNetCore.Http
Imports Microsoft.AspNetCore.Mvc
Imports System.IO

Public Function ConvertUpload(upload As IFormFile) As IActionResult
    Using memoryStream As New MemoryStream()
        upload.CopyTo(memoryStream)
        memoryStream.Position = 0
        ' Load uploaded Excel file from the stream
        Dim workbook = WorkBook.Load(memoryStream)
        ' Re-export as XLSX regardless of the original file extension or file type
        Dim stream = workbook.ToXlsxStream()
        Dim filename As String = Path.GetFileNameWithoutExtension(upload.FileName) & ".xlsx"
        Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename)
    End Using
End Function
$vbLabelText   $csharpLabel

Çıkış: CSV'yiXLSXFormatına Dönüştürme

ASP .NET C#'de Excel Dosyasını İndir: Verileri XLSX,CSVve Daha Fazlasına Aktarın: Resim 4 -CSVdosyamızıXLSXformatına dönüştürmek için örnek çıktı

WorkBook.Load metodu bir MemoryStream kabul eder, böylece yüklenen dosyaları öncelikle diske kaydetmeye gerek yoktur. Kaynağın XLS,XLSXveyaCSVdosyası olup olmadığını otomatik algılar ve buna göre ayrıştırır. Oradan,ToXlsxStream()modernXLSXformatında temiz yeni bir MemoryStream oluşturur, her byte doğru yapılandırılmıştır. Bu, kullanıcı gönderimlerini daha fazla işlem veya depolama öncesinde normalleştirmek için kullanışlıdır.

Hangi Dosya Formatları Dışa Aktarılabilir?

IronXL, verileri birden fazla elektronik tablo ve veri değişim formatına dışa aktarmayı destekler. Aşağıdaki tablo mevcut çıktı seçeneklerini ve en iyi kullanım durumlarını özetlemektedir.

|Format| Dosya Uzantısı | Akış Metodu | En İyi Kullanım Durumu | | --- | --- | --- | --- | |XLSX|.xlsx|ToXlsxStream()| Formatlama ve formüller ile modern Excel elektronik tabloları | |XLS|.xls|ToXlsStream()| Eski sistem uyumluluğu | |CSV|.csv|ToCsvStream()| Veritabanı aktarımları, veri hatları, hafif dışa aktarma | |XML|.xml|ToXmlStream()|Kurum sistemi entegrasyonu| |JSON|.json|SaveAsJson()|Web API yanitlari ve veri degisimi| |HTML|.html|ExportToHtml()|Elektronik tablo verilerinin web sayfasinda görüntülenmesi|

Her akış yöntemi, ASP.NET Core'un File() yanıt yardımcısına doğrudan takılan bir MemoryStream döndürür. Byte[]'ın daha uygun olduğu durumlar için (örneğin, blob veritabanına kaydederken veya bir e-posta yanıt akışına eklerken), byte dizi alternatifi (ToByteArray()) de mevcut. IronXL NuGet paketi yüklendikten hemen sonra bu yöntemlerin tümü kullanılabilir. Her bir dışa aktarma formatının tam bir yol gösterimi için, Excel'e dışa aktarma dokümantasyonuna bakın.

Hedef, iş analistleri içinXLSXformatında dosyaları indirmek, veri mühendisleri içinCSVdosyalarını dışa aktarmak veya kurum entegrasyonu içinXMLoluşturmak olsun, IronXL kodu temiz tutar ve çıktı .NET Core ve .NET Framework uygulamalarında güvenilir olur. Bir sonraki projenizde elektronik tablo dışa aktarımlarını göndermeye hazır mısınız? Ücretsiz deneme lisansı edinin veya lisanslama seçeneklerini keşfedin ve bugün başlayın. IronXL başlarken kılavuzuna adım adım kurulum talimatları için başvurun.

Sıkça Sorulan Sorular

C# kullanarak ASP.NET Core'da bir Excel dosyasini nasil indirebilirim?

IronXL kullanarak C# ile ASP.NET Core'da bir Excel dosyasi indirebilirsiniz. IronXL, verileri XLSX, CSV ve XML gibi çeşitli formatlara doğrudan MVC denetleyicilerinden aktarmanizi saglar. Bu işlem, MemoryStream ve File() metodu kullanilarak etkin bir şekilde yönetilebilir.

Excel dosyalarini aktarmak için IronXL kullanmanin faydalari nelerdir?

IronXL, MemoryStream'i etkili bir şekilde yöneterek ve HTTP content-disposition başlıklarını ayarlayarak Excel dosyalarinin aktarimini kolaylastirir. Bu, tarayici davranisini sürekli hale getirir ve veri hasarinin onune gecer, kurumsal web uygulamalari için ideal hale getirir.

IronXL hangi dosya formatlarina veri aktarabilir?

IronXL, veri aktarimi için XLSX, CSV ve XML gibi birden çok dosya formatini destekler. Bu çok yonluluk, geliştiricilerin farkli veri aktarimi gereksinimlerini sorunsuz bir şekilde ele almasina yardimci olur.

Excel dosyalarini aktarirken IronXL hangi teknik zorluklari asmaya yardimci olur?

IronXL, MemoryStream yönetimi ve kesin HTTP content-disposition basliklarinin konfigurasyonu gibi zorluklarin ustesinden gelinir. Bu özellikler, disara aktariilan Excel dosyalarinin tarayicilar tarafindan doğru bir şekilde islenmesini saglar ve veri hasarini onler.

IronXL, MVC denetleyicilerinden veri aktarmak için kullanilabilir mi?

Evet, IronXL, MVC denetleyicilerinden veri aktarmak için kullanilabilir. Verileri Excel formatinda çıkarmanin doğrudan bir yolunu sunar, bu da ASP.NET Core web uygulamalari için pratik bir seçim yapar.

IronXL, Excel dosyalari oluşturma süreçini nasil geliştirir?

IronXL, MemoryStream ve HTTP basliklari yönetimi gibi karmaşık görevleri otomatiklestirerek, geliştiricilerin teknik incelemeler yerine temel işlevselliklere odaklanmalarına olanak tanır.

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