Altbilgi içeriğine atla
IRONXL KULLANARAK

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

E-ticaret web uygulamaları için elektronik tablo dışa aktarma işlevselliği uygulamak yaygın bir gereksinimdir, ancak bu dosyaları oluşturmanın ve teslim etmenin manuel süreci genellikle önemli teknik karmaşıklıklar getirir. Geliştiriciler sıklıkla, MemoryStream yönetiminin inceliklerini aşmalı ve tarayıcı davranışını sağlamak ve veri bozulmasını önlemek için kesin HTTP içerik-disp headerlarını yapılandırmalıdır.

Bu makale, IronXL kütüphanesini kullanarak ASP .NET C# MVC kontrolcülerinde Excel dosyalarını oluşturmak ve indirmek için gereken her şeyi adım adım anlatır.XLSXformatında gerçek Excel dosyalarına veri aktarmayı,CSVdosyalarını iletmeyi, yeniden dışa aktarma için yüklemeleri dönüştürmeyi ve tarayıcıya dosya indirmelerini geri döndürmeyi ele alacağız; bunların tümü Microsoft Office yüklenmeden veya Excel Interop'a bağımlı olmadan yapılacak. IronXL NuGet paketini yükleyin ve kaynak kodu örnekleriyle birlikte ücretsiz bir deneme başlatın.

NuGet NuGet ile yükleyin

PM >  Install-Package IronXL.Excel

NuGet'te hızlı kurulum için https://www.nuget.org/packages/IronXL.Excel'i kontrol edin. 10 milyonun üzerinde indirme ile, C# ile PDF geliştirmeyi dönüştürüyor. DLL de indirebilirsiniz.

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

ASP.NET Core senaryosunda herhangi bir Excel dosyası indirme işleminin temel deseni üç adımdan oluşur: çalışma kitabı oluşturma, bir akışa yazma, ve akışı dosya yanıtı olarak döndürme. Aşağıdaki kod, baştan sona birXLSXdosyası oluşturan ve tarayıcıya gönderen tam 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

Çıktı Excel Dosyası

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

WorkBook.Create metodu yeni bir Excel belgesi üretir ve CreateWorkSheet ilk çalışma sayfasını ekler. Hücreler değerlerle doldurulduktan sonra, ToStream metodu tüm workbook'u bir MemoryStream'e dönüştürür, geçici dosyalar diske dokunmaz. Denetleyicideki File() döndürme metodu içerik dizilim başlığını ataçment yapar, bu da tarayıcıya dosyayı indirmesini söyler, böylece onu render etmeye çalışmaz. Üçüncü parametre, dosya adının kullanıcının indirme diyaloğunda nasıl görüneceğini kontrol eder.

Bu public IActionResult deseni, .NET Framework ve ASP.NET Core projeleri arasında çalışır, bu nedenle verileri Excel'e dışa aktarması gereken web uygulamaları için gidilecek yoldur.

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

Gerçek dünya senaryolarının çoğu, önceden kodlanmış değerler yerine veritabanı tablosundan veri dışa aktarmayı içerir. Pattern aynı kalır, veriyi sorgulayın, çalışma sayfalarını doldurun ve dosyayı döndürün. İşte bir veritabanından kayıtları çekiyormuş gibi yaparak bir Excel belgesine yazma örneği.

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# ile Excel Dosyası İndir: Verileri XLSX,CSV& Daha Fazlasına Aktar: Resim 2 - Verilerin bir veritabanından Excel dosyasına aktarılması için çıktı

Üretimde, orders dizisi bir Entity Framework Core sorgusu, bir Dapper çağrısı veya veritabanına bir bağlantı dizesi aracılığıyla bağlanan herhangi bir veri erişim katmanından gelir. Döngü sonuçları iterate eder ve her değeri çalışma sayfasındaki doğru hücrelere yazar. Dize dosya adının, tarih damgasını içeren bir küçük ayrıntı olduğuna dikkat edin, bu, kullanıcılar dosyaları tekrarlayan bir şekilde indirdiğinde baş ağrısını giderir.

IronXL'in hücre adresleme sistemi (çalışma sayfası[$"A{row}"]) her şeyi okunabilir kılar ve WorkBook API'si iç kısımda geçerli birXLSXdosyası oluşturmanın tüm ağırlığını üstlenir. Formüller, stil verme veya çok sayfalı workbook'ları içeren daha karmaşık senaryolar için aynı yaklaşım temiz bir şekilde ölçeklenir.

Verileri NedenXLSXYerineCSVDosyası Olarak İndirirsiniz?

Bazen hafif birCSVdosyası daha iyi bir seçimdir, özellikle verileri diğer sistemlere, veri tabanlarına veya gerçek bir Excel dosyasındaki zengin özellik setine ihtiyaç duymayan araçlara beslerken. IronXL, formatlar arasında geçiş yapmayı önemsiz 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

ÇıktıCSVDosyası

ASP .NET C# ile Excel Dosyası İndir: Verileri XLSX,CSV& Daha Fazlasına Aktar: Resim 3 - Excel yerineCSVdosyası olarak indirilen veri

MemoryStream olarak ilk çalışma sayfasınıCSVformatında dışa aktaran ToCsvStream metodu.CSVdosyaları veri alışverişi için harika çalışır, ancak herhangi bir biçimlendirme, formül ve çoklu sayfa yapısını çıkarır. Bu özelliklere ihtiyacınız olduğunda, ToStream() veyaToXlsxStream()aracılığıylaXLSXdosya formatına bağlı kalın.Biçimdönüştürmeleri hakkında daha derin bir bakış için, elektronik tablo dönüştürme kılavuzuna bakın.

Yüklemeyi Farklı Bir Formatta Yeniden Nasıl Dışa Aktarırsınız?

Kullanıcılardan yüklenen dosyaları kabul etme ve başka bir formatta dışa aktarma, diyelim ki birXLSyüklemesini XLSX'e dönüştürmek veya başlangıçta eski bir formatta kaydedilmiş bir workbook'danCSVdosyaları üretmek, yaygın bir web uygulaması senaryosudur.

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

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

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

WorkBook.Load metodu, bir MemoryStream'i kabul eder, dolayısıyla önce yüklü dosyaları diske kaydetmeye gerek yoktur. Kaynağın bir XLS,XLSXveyaCSVdosyası olup olmadığını otomatik olarak algılar ve buna göre işler. Buradan ToXlsxStream(), modernXLSXformatında temiz yeni bir MemoryStream üretir, her byte uygun şekilde yapılandırılmıştır. Bu, kullanıcı gönderimlerini normallaştırma ve daha fazla işlem veya depolama öncesi faydalıdır.

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

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

|Biçim| Dosya Uzantısı | Akış Metodu | En İyi Kullanım Durumu | |---|---|---|---| |XLSX|.xlsx|ToXlsxStream()| Biçimlendirme ve formüllerle modern Excel elektronik tabloları | |XLS|.xls|ToXlsStream()| Eski sistem uyumluluğu | |CSV|.csv|ToCsvStream()| Veritabanı içe aktarma, veri hatları, hafif dışa aktarma | |XML|.xml|ToXmlStream()| Kurumsal sistem entegrasyonu | |JSON|.json|SaveAsJson()| Web API yanıtları ve veri değişimi | |HTML|.html|ExportToHtml()| Elektronik tablo verilerinin web sayfası olarak gösterimi |

Her akış metodu, ASP.NET Core'un File() döndürme yardımcı programına doğrudan bağlanan bir MemoryStream döndürür. Byte dizi alternatifi (ToByteArray()) de, örneğin bir blob veritabanına kaydederken veya bir e-posta yanıt akışına eklerken daha uygun olduğunda kullanılabilir. Tüm bu yöntemler, IronXL NuGet paketi yüklendikten hemen sonra kullanılabilir. Her bir dışa aktarma formatının tam bir aktarımı için, Excel'e dışa aktarma belgelerine bakın.

Hedef ister iş analistleri içinXLSXformatında dosyalar indirmek, veri mühendisleri içinCSVdosyaları dışa aktarmak, ister kurumsal entegrasyon içinXMLüretmek olsun, IronXL kodu temiz ve çıktı güvenilir kılar, .NET Core ve .NET Framework uygulamalarında çalışır. Bir sonraki projenizde elektronik tablo dışa aktarımı yapmaya hazır mısınız? Ücretsiz bir deneme lisansı alın veya bugün başlamak için lisanslama seçeneklerini keşfedin. Adım adım kurulum talimatları için, IronXL başlarken kılavuzuna bakın.

Sıkça Sorulan Sorular

ASP.NET Core'da C# kullanarak Excel dosyasını nasıl indirebilirim?

IronXL'yi kullanarak, ASP.NET Core'da C# ile Excel dosyasını indirebilirsiniz. IronXL, verilerinizi doğrudan MVC denetleyicilerinden XLSX, CSV ve XML gibi çeşitli formatlara aktarmanıza olanak tanır. Bu, MemoryStream ve File() yöntemi kullanılarak verimli bir şekilde yönetilebilir.

Excel dosyalarını dışa aktarma için IronXL kullanmanın faydaları nelerdir?

IronXL, MemoryStream'i etkili bir şekilde yöneterek ve HTTP content-disposition başlıklarını yapılandırarak Excel dosyalarını dışa aktarma sürecini basitleştirir. Tutarlı bir tarayıcı davranışı sağlaması ve veri bozulmasını önlemesi sebebiyle, kurumsal web uygulamaları için idealdir.

IronXL veriyi hangi dosya formatlarına aktarabilir?

IronXL, XLSX, CSV ve XML dahil olmak üzere birden fazla dosya formatına veri aktarabilir. Bu çok yönlülük, geliştiricilerin farklı veri dışa aktarma gereksinimlerini sorunsuz bir şekilde ele almalarına yardımcı olur.

Excel dosyalarını dışa aktarırken IronXL'nin üstesinden geldiği teknik zorluklar nelerdir?

IronXL, MemoryStream yönetimi ve kesin HTTP content-disposition başlıklarının yapılandırılması gibi zorlukların üstesinden gelmeye yardımcı olur. Bu özellikler, tarayıcılar tarafından doğru bir şekilde işlem görmesini ve veri bozulmasını önler.

IronXL, MVC denetleyicilerinden veri dışa aktarma için kullanılabilir mi?

Evet, IronXL, MVC denetleyicilerinden veri dışa aktarmak için kullanılabilir. Excel formatında veri çıktısı sağlamak için doğrudan bir yol sunar ve bu da ASP.NET Core web uygulamaları için pratik bir seçimdir.

IronXL, Excel dosyalarını oluşturma sürecini nasıl iyileştirir?

IronXL, MemoryStream ve HTTP başlık yönetimi gibi karmaşık görevleri otomatikleştirerek süreci iyileştirir, geliştiricilerin teknik ayrıntılar yerine temel işlevselliğe odaklanmalarına olanak tanı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