Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Excel-Dateien in .NET C# herunterladen: Daten nach XLSX, CSV und mehr exportieren

Die Implementierung einer Exportfunktion für Tabellenkalkulationen ist eine häufige Anforderung für Webanwendungen in Unternehmen, doch der manuelle Prozess der Generierung und Bereitstellung dieser Dateien führt oft zu erheblicher technischer Komplexität. Entwickler müssen sich häufig mit den Feinheiten der MemoryStream-Verwaltung auseinandersetzen und präzise HTTP-Content-Disposition-Header konfigurieren, um ein konsistentes Browserverhalten zu gewährleisten und Datenbeschädigung zu verhindern.

Dieser Artikel beschreibt alle notwendigen Schritte zum Erstellen und Herunterladen von Excel-Dateien in .NET C# MVC-Controllern mithilfe der IronXL -Bibliothek. Wir zeigen Ihnen, wie Sie Daten in echte Excel-Dateien im XLSX-Format exportieren, CSV-Dateien streamen, Uploads für den erneuten Export konvertieren und heruntergeladene Dateien im Browser anzeigen lassen – alles ohne Microsoft Office zu installieren oder Excel Interop zu verwenden. Installieren Sie das IronXL NuGet Paket und starten Sie eine kostenlose Testphase , um die Quellcodebeispiele nachzuvollziehen.

NuGet Mit NuGet installieren

PM >  Install-Package IronXl.Excel

Schauen Sie sich IronXL auf NuGet für eine schnelle Installation an. Mit über 10 Millionen Downloads transformiert es die PDF-Entwicklung mit C#. Sie können auch das DLL herunterladen.

Wie erstellt und lädt man eine Excel-Datei von einem Controller herunter?

Das grundlegende Vorgehen beim Herunterladen einer Excel-Datei in einem ASP.NET Core Szenario umfasst drei Schritte: Erstellen der Arbeitsmappe, Schreiben in einen Stream und Zurückgeben des Streams als Dateiantwort. Der folgende Code zeigt eine vollständige MVC-Controller-Aktion, die eine XLSX-Datei von Grund auf neu erstellt und an den Browser sendet.

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);
    }
}
$vbLabelText   $csharpLabel

Ausgabedatei im Excel-Format

Excel-Datei in .NET C# herunterladen: Daten nach XLSX, CSV und mehr exportieren: Bild 1 – Beispielausgabe für den Download einer Excel-Datei in .NET C#

Die Methode WorkBook.Create erzeugt ein neues Excel-Dokument, und CreateWorkSheet fügt das erste Arbeitsblatt hinzu. Nach dem Befüllen der Zellen mit Werten wandelt die ToStream- Methode die gesamte Arbeitsmappe in einen MemoryStream um; es werden keine temporären Dateien auf der Festplatte gespeichert. Die Rückgabemethode File() des Controllers setzt den Content Disposition Header auf attachment, wodurch der Browser angewiesen wird, die Datei herunterzuladen, anstatt sie darzustellen. Der dritte Parameter steuert, wie der Dateiname im Download-Dialog des Benutzers angezeigt wird.

Dieses öffentliche IActionResult-Muster funktioniert sowohl in .NET Framework als auch in ASP.NET Core Projekten und ist daher die bevorzugte Methode für Webanwendungen, die Daten nach Excel exportieren müssen.

Wie exportiere ich Datenbankdaten in eine herunterladbare Tabellenkalkulation?

In den meisten realen Anwendungsfällen geht es darum, Daten aus einer Datenbanktabelle zu exportieren, anstatt fest codierte Werte zu verwenden. Das Vorgehen bleibt gleich: Daten abfragen, Tabellenblätter füllen und die Datei zurückgeben. Hier ist ein Beispiel, das das Abrufen von Datensätzen aus einer Datenbank und deren Schreiben in ein Excel-Dokument simuliert.

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);
    }
}
$vbLabelText   $csharpLabel

Ausgabe

Excel-Datei in .NET C# herunterladen: Daten nach XLSX, CSV und mehr exportieren: Bild 2 – Ausgabe für den Datenexport aus einer Datenbank in eine Excel-Datei

Im Produktionsbetrieb würde das Orders-Array aus einer Entity Framework Core-Abfrage, einem Dapper -Aufruf oder einer beliebigen Datenzugriffsschicht stammen, die über eine Verbindungszeichenfolge mit der Datenbank verbunden ist. Die Schleife durchläuft die Ergebnisse und schreibt jeden Wert in die entsprechenden Zellen des Arbeitsblatts. Beachten Sie, dass der Dateiname einen Zeitstempel enthält – ein kleines Detail, das viel Ärger erspart, wenn Benutzer Dateien wiederholt herunterladen.

Das Zelladressierungssystem von IronXL (worksheet[$"A{row}"]) sorgt für Lesbarkeit, und die WorkBook API übernimmt intern die gesamte aufwendige Arbeit des Erstellens einer gültigen XLSX-Datei. Auch für komplexere Szenarien mit Formeln, Formatierungen oder mehrteiligen Arbeitsmappen lässt sich der gleiche Ansatz problemlos skalieren.

Wie lade ich Daten als CSV-Dateien anstatt als XLSX-Dateien herunter?

Manchmal ist eine schlanke CSV-Datei die bessere Wahl, insbesondere wenn Daten in andere Systeme, Datenbanken oder Tools eingespeist werden, die nicht den umfangreichen Funktionsumfang einer Excel-Datei benötigen. IronXL macht den Wechsel zwischen verschiedenen Formaten kinderleicht.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class CsvController : Controller
{
    // Export data as a CSV file 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 to CSV stream 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 a CSV file 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 to CSV stream instead of XLSX
        var stream = workbook.ToCsvStream();
        string filename = "Products.csv";
        return File(stream, "text/csv", filename);
    }
}
$vbLabelText   $csharpLabel

Ausgabe CSV-Datei

Excel-Datei in .NET C# herunterladen: Daten nach XLSX, CSV und mehr exportieren: Bild 3 – Daten als CSV-Datei anstatt als Excel-Datei heruntergeladen

Die Methode ToCsvStream exportiert das erste Arbeitsblatt als CSV-formatierten MemoryStream . CSV-Dateien eignen sich hervorragend für den Datenaustausch, allerdings gehen dabei Formatierungen, Formeln und die Struktur mit mehreren Tabellenblättern verloren. Wenn Sie diese Funktionen benötigen, bleiben Sie beim XLSX-Dateiformat und verwenden Sie dazu ToStream() oder ToXlsxStream(). Für einen detaillierteren Einblick in Formatkonvertierungen konsultieren Sie bitte den Leitfaden zur Tabellenkonvertierung .

Wie exportiere ich einen Upload in einem anderen Format?

Ein typisches Szenario für Webanwendungen besteht darin, von Benutzern hochgeladene Dateien entgegenzunehmen und sie in einem anderen Formatzu exportieren, beispielsweise eine XLS-Datei in XLSX zu konvertieren oder CSV-Dateien aus einer Arbeitsmappe zu erstellen, die ursprünglich in einem älteren Formatgespeichert wurde.

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 as XLSX regardless 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 as XLSX regardless 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);
}
$vbLabelText   $csharpLabel

Ausgabe: Konvertierung von CSV in das XLSX-Format

Excel-Datei in .NET C# herunterladen: Daten nach XLSX, CSV und mehr exportieren: Bild 4 – Beispielausgabe für die Konvertierung unserer CSV-Datei in das XLSX-Format

Die Methode WorkBook.Load akzeptiert einen MemoryStream, sodass hochgeladene Dateien nicht vorher auf der Festplatte gespeichert werden müssen. Sie erkennt automatisch, ob es sich bei der Quelle um eine XLS-, XLSX- oder CSV-Datei handelt und verarbeitet diese entsprechend. Von dort aus erzeugt ToXlsxStream() einen neuen, sauberen MemoryStream im modernen XLSX-Format, wobei jedes Byte korrekt strukturiert ist. Dies ist nützlich, um Benutzereingaben vor der Weiterverarbeitung oder Speicherung zu normalisieren.

Welche Dateiformate können exportiert werden?

IronXL unterstützt den Export von Daten in verschiedene Tabellenkalkulations- und Datenaustauschformate. Die folgende Tabelle fasst die verfügbaren Ausgabeoptionen und ihre besten Anwendungsbereiche zusammen.

| Format| Dateierweiterung | Stream-Methode | Bester Anwendungsfall | | ---| ---| ---| ---| | XLSX | .xlsx | ToXlsxStream() | Moderne Excel-Tabellen mit Formatierung und Formeln | | XLS | .xls | ToXlsStream() | Kompatibilität mit älteren Systemen | | CSV | .csv | ToCsvStream() | Datenbankimporte, Datenpipelines, schlanker Export | | XML | .xml | ToXmlStream() | Integration von Unternehmenssystemen | | JSON | .json | SaveAsJson() | Web-API-Antworten und Datenaustausch | | HTML | .html | ExportToHtml() | Webseitendarstellung von Tabellendaten |

Jede Stream-Methode gibt einen MemoryStream zurück, der direkt in den File()-Rückgabehelfer von ASP.NET Core eingebunden wird. Die Alternative mit einem Byte-Array (ToByteArray()) steht ebenfalls zur Verfügung, beispielsweise beim Speichern in einer Blob-Datenbank oder beim Anhängen an einen E-Mail-Antwortstrom. Alle diese Methoden stehen unmittelbar nach der Installation des IronXL NuGet Pakets zur Verfügung. Eine vollständige Beschreibung der einzelnen Exportformate finden Sie in der Dokumentation zum Export nach Excel .

Egal ob es darum geht, Dateien im XLSX-Format für Business-Analysten herunterzuladen, CSV-Dateien für Dateningenieure zu exportieren oder XML für die Unternehmensintegration zu generieren – IronXL sorgt für sauberen Code und zuverlässige Ergebnisse in .NET Core und .NET Framework Anwendungen. Sind Sie bereit, in Ihrem nächsten Projekt Tabellenkalkulationsexporte zu versenden? Sichern Sie sich eine kostenlose Testlizenz oder informieren Sie sich über die verschiedenen Lizenzoptionen, um noch heute loszulegen. Eine Schritt-für-Schritt-Anleitung zur Einrichtung finden Sie im IronXL Leitfaden für Einsteiger .

Häufig gestellte Fragen

Wie kann ich in ASP.NET Core mit C# eine Excel-Datei herunterladen?

Sie können in ASP.NET Core mit C# mithilfe von IronXL eine Excel-Datei herunterladen. IronXL ermöglicht den direkten Datenexport aus MVC-Controllern in verschiedene Formate wie XLSX, CSV und XML. Dies lässt sich effizient mit MemoryStream und der File()-Methode realisieren.

Welche Vorteile bietet die Verwendung von IronXL zum Exportieren von Excel-Dateien?

IronXL vereinfacht den Export von Excel-Dateien durch effizientes MemoryStream-Management und die Konfiguration von HTTP-Content-Disposition-Headern. Es gewährleistet ein konsistentes Browserverhalten und verhindert Datenbeschädigung, wodurch es sich ideal für Webanwendungen in Unternehmen eignet.

In welche Dateiformate kann IronXL Daten exportieren?

IronXL kann Daten in verschiedene Dateiformate exportieren, darunter XLSX, CSV und XML. Diese Vielseitigkeit hilft Entwicklern, unterschiedliche Datenexportanforderungen problemlos zu erfüllen.

Welche technischen Herausforderungen hilft IronXL beim Exportieren von Excel-Dateien zu bewältigen.

IronXL hilft bei der Bewältigung von Herausforderungen wie der Verwaltung von MemoryStreams und der Konfiguration präziser HTTP-Content-Disposition-Header. Diese Funktionen gewährleisten, dass exportierte Excel-Dateien von Browsern korrekt verarbeitet werden und Datenbeschädigung verhindert wird.

Kann IronXL zum Exportieren von Daten aus MVC-Controllern verwendet werden?

Ja, IronXL kann zum Exportieren von Daten aus MVC-Controllern verwendet werden. Es bietet eine unkomplizierte Möglichkeit, Daten im Excel-Format auszugeben und ist daher eine praktische Wahl für ASP.NET Core -Webanwendungen.

Wie verbessert IronXL den Prozess der Erstellung von Excel-Dateien?

IronXL optimiert den Prozess durch die Automatisierung komplexer Aufgaben wie MemoryStream- und HTTP-Header-Management, sodass sich Entwickler auf die Kernfunktionalität anstatt auf technische Details konzentrieren können.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me