Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Wie man Excel-Dateien in Blazor mit IronXL exportiert

Der Datenexport nach Excel ist eine Funktion, die nahezu jede Blazor -Webanwendung benötigt – egal ob es sich um Verkaufsberichte, Inventarlisten oder Kundenrechnungen handelt. In einer Blazor -Server-Anwendung kann dies jedoch ohne Microsoft Office zuverlässig umzusetzen, eine Herausforderung darstellen. IronXL macht es Ihnen leicht: Sie können Excel-Dateien direkt vom Server erstellen, formatieren und herunterladen, ohne dass eine Office-Installation erforderlich ist. Dieser Leitfaden führt Sie durch die Entwicklung einer produktionsreifen Excel-Exportfunktion in Blazor mit IronXL – von der Projekteinrichtung und dem Service-Design bis hin zu erweiterten Formatierungen und mehrseitigen Berichten.

Wie richtet man IronXL in einem Blazor -Server-Projekt ein?

Bevor Sie die Exportlogik schreiben, müssen Sie IronXL zu einem Blazor Server-Projekt hinzufügen und einen browserseitigen Download-Helfer konfigurieren.

Erstellung des Blazor -Server-Projekts

Erstellen Sie zunächst ein neues Blazor Server-Projekt in Visual Studio 2022 oder höher mit .NET 10 als Zielplattform. Sobald das Projekt fertig ist, installieren Sie IronXL über die NuGet -Paket-Manager-Konsole:

Install-Package IronXl.Excel

IronXL funktioniert mit .NET 6 und höher, sodass bestehende Blazor Projekte es ohne Aktualisierung des Frameworks übernehmen können. Informationen zu alternativen Installationsmethoden – wie der NuGet Benutzeroberfläche oder der Befehlszeilenschnittstelle – finden Sie im IronXL Installationshandbuch .

Hinzufügen des JavaScript -Download-Helfers

Blazor Server läuft serverseitig, daher ist zum Auslösen eines Dateidownloads eine kleine JavaScript Brücke erforderlich. Fügen Sie in Ihrem Ordner wwwroot eine Datei mit dem Namen excelExport.js hinzu:

window.downloadFileFromStream = async (fileName, contentStreamReference) => {
    const arrayBuffer = await contentStreamReference.arrayBuffer();
    const blob = new Blob([arrayBuffer]);
    const url = URL.createObjectURL(blob);
    const anchorElement = document.createElement('a');
    anchorElement.href = url;
    anchorElement.download = fileName ?? 'export.xlsx';
    anchorElement.click();
    anchorElement.remove();
    URL.revokeObjectURL(url);
}
window.downloadFileFromStream = async (fileName, contentStreamReference) => {
    const arrayBuffer = await contentStreamReference.arrayBuffer();
    const blob = new Blob([arrayBuffer]);
    const url = URL.createObjectURL(blob);
    const anchorElement = document.createElement('a');
    anchorElement.href = url;
    anchorElement.download = fileName ?? 'export.xlsx';
    anchorElement.click();
    anchorElement.remove();
    URL.revokeObjectURL(url);
}
JAVASCRIPT

Fügen Sie dieses Skript in Ihre _Host.cshtml-Datei (oder App.razor in .NET 8+) ein:

<script src="~/excelExport.js"></script>
<script src="~/excelExport.js"></script>
HTML

Diese Funktion wandelt den Byte-Stream von Blazor in eine temporäre Blob-URL um, löst den Download im Browser aus und bereinigt anschließend das URL-Objekt, um Speicherlecks zu vermeiden. Es ist bewusst minimalistisch gehalten – die eigentliche Arbeit findet in C# auf dem Server statt.

Starten Sie jetzt mit IronXL.
green arrow pointer

Wie erstellt man einen Excel-Exportdienst in C#?

Durch die Trennung der Excel-Generierung von Ihren Razor Komponenten bleibt der Code testbar und kann über mehrere Seiten hinweg wiederverwendet werden. Das untenstehende Muster kapselt IronXL in eine eigene Serviceklasse ein.

Erstellen des ExcelExportService

Erstelle eine neue Datei Services/ExcelExportService.cs:

using IronXL;
using System.IO;
using ExportExcel.Models;

public class ExcelExportService
{
    public byte[] GenerateSalesReport(List<SalesData> salesData)
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        workbook.Metadata.Author = "Sales Department";

        var worksheet = workbook.CreateWorkSheet("Monthly Sales");

        // Add column headers
        worksheet["A1"].Value = "Date";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Quantity";
        worksheet["D1"].Value = "Revenue";
        worksheet["E1"].Value = "Profit Margin";

        // Style the header row
        var headerRange = worksheet["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#4472C4";
        headerRange.Style.Font.Color = "#FFFFFF";

        // Populate data rows
        int row = 2;
        foreach (var sale in salesData)
        {
            worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd");
            worksheet[$"B{row}"].Value = sale.Product ?? "Unknown";
            worksheet[$"C{row}"].Value = sale.Quantity;
            worksheet[$"D{row}"].Value = sale.Revenue;
            worksheet[$"E{row}"].Value = $"=D{row}*0.15";
            row++;
        }

        worksheet.AutoSizeColumn(0, true);

        using var ms = workbook.ToStream();
        return ms.ToArray();
    }
}
using IronXL;
using System.IO;
using ExportExcel.Models;

public class ExcelExportService
{
    public byte[] GenerateSalesReport(List<SalesData> salesData)
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        workbook.Metadata.Author = "Sales Department";

        var worksheet = workbook.CreateWorkSheet("Monthly Sales");

        // Add column headers
        worksheet["A1"].Value = "Date";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Quantity";
        worksheet["D1"].Value = "Revenue";
        worksheet["E1"].Value = "Profit Margin";

        // Style the header row
        var headerRange = worksheet["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#4472C4";
        headerRange.Style.Font.Color = "#FFFFFF";

        // Populate data rows
        int row = 2;
        foreach (var sale in salesData)
        {
            worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd");
            worksheet[$"B{row}"].Value = sale.Product ?? "Unknown";
            worksheet[$"C{row}"].Value = sale.Quantity;
            worksheet[$"D{row}"].Value = sale.Revenue;
            worksheet[$"E{row}"].Value = $"=D{row}*0.15";
            row++;
        }

        worksheet.AutoSizeColumn(0, true);

        using var ms = workbook.ToStream();
        return ms.ToArray();
    }
}
$vbLabelText   $csharpLabel

Registrierung des Dienstes

Fügen Sie den Dienst dem DI-Container in Program.cs hinzu:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<ExcelExportService>();

var app = builder.Build();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<ExcelExportService>();

var app = builder.Build();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
$vbLabelText   $csharpLabel

Dieser Service demonstriert mehrere wichtige Funktionen von IronXL . Sie können mit einem einzigen Methodenaufruf neue Arbeitsmappen und Arbeitsblätter erstellen , formatierte Überschriften anwenden, Zeilen aus beliebigen Datenquellen füllen und Excel-Formeln wie =D2*0.15 einbetten. Der Aufruf AutoSizeColumn stellt sicher, dass die Spalten breit genug sind, um ihren Inhalt unabhängig von der Datenlänge korrekt anzuzeigen. Weitere Formatierungsoptionen finden Sie im Leitfaden zur Zellenformatierung .

Wie kann man einen Excel-Download aus einer Blazor -Komponente heraus auslösen?

Sobald der Dienst eingerichtet ist, benötigen Sie eine Razor Komponente, die ihn aufruft und die resultierenden Bytes an den Browser übergibt.

Schreiben der Razor Komponente

Erstelle eine Seite unter Pages/ExcelExportDashboard.razor:

@page "/excel-export"
@using ExportExcel.Models
@inject ExcelExportService ExcelService
@inject IJSRuntime JS

<h3>Excel Export Dashboard</h3>

<div class="export-section">
    <button class="btn btn-primary" @onclick="ExportSalesReport" disabled="@isExporting">
        @if (isExporting)
        {
            <span>Generating...</span>
        }
        else
        {
            <span>Export Sales Report</span>
        }
    </button>

    @if (!string.IsNullOrEmpty(errorMessage))
    {
        <div class="alert alert-danger mt-2">@errorMessage</div>
    }
</div>

@code {
    private bool isExporting = false;
    private string errorMessage = "";

    private async Task ExportSalesReport()
    {
        try
        {
            isExporting = true;
            errorMessage = "";

            var salesData = GetSalesData();
            var fileBytes = ExcelService.GenerateSalesReport(salesData);

            using var stream = new MemoryStream(fileBytes);
            using var streamRef = new DotNetStreamReference(stream);
            await JS.InvokeVoidAsync(
                "downloadFileFromStream",
                $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx",
                streamRef
            );
        }
        catch (Exception)
        {
            errorMessage = "Export failed. Please try again.";
        }
        finally
        {
            isExporting = false;
        }
    }

    private List<SalesData> GetSalesData()
    {
        return new List<SalesData>
        {
            new() { Date = DateTime.Now, Product = "Widget A", Quantity = 100, Revenue = 5000 },
            new() { Date = DateTime.Now.AddDays(-1), Product = "Widget B", Quantity = 75, Revenue = 3750 }
        };
    }
}
@page "/excel-export"
@using ExportExcel.Models
@inject ExcelExportService ExcelService
@inject IJSRuntime JS

<h3>Excel Export Dashboard</h3>

<div class="export-section">
    <button class="btn btn-primary" @onclick="ExportSalesReport" disabled="@isExporting">
        @if (isExporting)
        {
            <span>Generating...</span>
        }
        else
        {
            <span>Export Sales Report</span>
        }
    </button>

    @if (!string.IsNullOrEmpty(errorMessage))
    {
        <div class="alert alert-danger mt-2">@errorMessage</div>
    }
</div>

@code {
    private bool isExporting = false;
    private string errorMessage = "";

    private async Task ExportSalesReport()
    {
        try
        {
            isExporting = true;
            errorMessage = "";

            var salesData = GetSalesData();
            var fileBytes = ExcelService.GenerateSalesReport(salesData);

            using var stream = new MemoryStream(fileBytes);
            using var streamRef = new DotNetStreamReference(stream);
            await JS.InvokeVoidAsync(
                "downloadFileFromStream",
                $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx",
                streamRef
            );
        }
        catch (Exception)
        {
            errorMessage = "Export failed. Please try again.";
        }
        finally
        {
            isExporting = false;
        }
    }

    private List<SalesData> GetSalesData()
    {
        return new List<SalesData>
        {
            new() { Date = DateTime.Now, Product = "Widget A", Quantity = 100, Revenue = 5000 },
            new() { Date = DateTime.Now.AddDays(-1), Product = "Widget B", Quantity = 75, Revenue = 3750 }
        };
    }
}
$vbLabelText   $csharpLabel

Funktion der Komponente

Das Flag isExporting deaktiviert die Schaltfläche während der Generierung und verhindert so doppelte Anfragen. Der Wrapper DotNetStreamReference sorgt für effizientes Binärstreaming vom .NET Speicherstream zur JavaScript Funktion und vermeidet so große Base64-Strings, die die Nutzdatengröße unnötig erhöhen würden. Zeitgestempelte Dateinamen wie SalesReport_20260228.xlsx gewährleisten eine übersichtliche Downloadstruktur ohne zusätzliche Konfiguration.

Wenn Sie im Browser zu /excel-export navigieren, wird die Dashboard-Seite mit einer Export-Schaltfläche geladen:

 Blazor -Export nach Excel: Vollständige Anleitung mit IronXL in C#: Bild 1 – Beispielseite mit Blazor

Durch Klicken des Buttons wird die Tabelle generiert und der Browser lädt die Datei automatisch herunter:

 Blazor Export nach Excel: Vollständige Anleitung zur Verwendung von IronXL in C#: Bild 2 – Datenexport in eine Excel-Datei

Welche erweiterten Formatierungsoptionen können Sie auf Excel-Exporte anwenden?

Für viele Anwendungsfälle genügen einfache Datenexporte, Produktionsanwendungen benötigen jedoch häufig bedingte Formatierung, mehrere Arbeitsblätter oder eine Datenvalidierung. IronXL unterstützt all diese Funktionen nativ.

Bedingte Formatierung für Inventurberichte

Der folgende Dienst hebt Artikel mit niedrigem Lagerbestand rot hervor – eine gängige Anforderung für Lager- oder Bestandsverwaltungsanwendungen:

using IronXL;
using ExportExcel.Models;
using System.IO;

public class InventoryExportService
{
    public byte[] GenerateInventoryReport(List<InventoryItem> items)
    {
        var workbook = WorkBook.Create();
        var details = workbook.CreateWorkSheet("Inventory Details");

        // Column headers
        details["A1"].Value = "SKU";
        details["B1"].Value = "Name";
        details["C1"].Value = "Quantity";
        details["D1"].Value = "Reorder Level";
        details["E1"].Value = "Status";

        var headerRange = details["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#2E75B6";
        headerRange.Style.Font.Color = "#FFFFFF";

        for (int i = 0; i < items.Count; i++)
        {
            int row = i + 2;
            var item = items[i];

            details[$"A{row}"].Value = item.SKU;
            details[$"B{row}"].Value = item.Name;
            details[$"C{row}"].Value = item.Quantity;
            details[$"D{row}"].Value = item.ReorderLevel;
            details[$"E{row}"].Value = item.Quantity < item.ReorderLevel
                ? "Reorder Required"
                : "OK";

            if (item.Quantity < item.ReorderLevel)
            {
                // Highlight the entire row for low-stock items
                details[$"A{row}:E{row}"].Style.BackgroundColor = "#FFB6B6";
                details[$"C{row}"].Style.Font.Bold = true;
            }
        }

        details.AutoSizeColumn(0, true);
        details.AutoSizeColumn(1, true);

        using var stream = workbook.ToStream();
        return stream.ToArray();
    }
}
using IronXL;
using ExportExcel.Models;
using System.IO;

public class InventoryExportService
{
    public byte[] GenerateInventoryReport(List<InventoryItem> items)
    {
        var workbook = WorkBook.Create();
        var details = workbook.CreateWorkSheet("Inventory Details");

        // Column headers
        details["A1"].Value = "SKU";
        details["B1"].Value = "Name";
        details["C1"].Value = "Quantity";
        details["D1"].Value = "Reorder Level";
        details["E1"].Value = "Status";

        var headerRange = details["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#2E75B6";
        headerRange.Style.Font.Color = "#FFFFFF";

        for (int i = 0; i < items.Count; i++)
        {
            int row = i + 2;
            var item = items[i];

            details[$"A{row}"].Value = item.SKU;
            details[$"B{row}"].Value = item.Name;
            details[$"C{row}"].Value = item.Quantity;
            details[$"D{row}"].Value = item.ReorderLevel;
            details[$"E{row}"].Value = item.Quantity < item.ReorderLevel
                ? "Reorder Required"
                : "OK";

            if (item.Quantity < item.ReorderLevel)
            {
                // Highlight the entire row for low-stock items
                details[$"A{row}:E{row}"].Style.BackgroundColor = "#FFB6B6";
                details[$"C{row}"].Style.Font.Bold = true;
            }
        }

        details.AutoSizeColumn(0, true);
        details.AutoSizeColumn(1, true);

        using var stream = workbook.ToStream();
        return stream.ToArray();
    }
}
$vbLabelText   $csharpLabel

IronXL wendet die Zellformatierung basierend auf den Datenwerten zum Zeitpunkt der Generierung an. Sie können außerdem bedingte Formatierungsregeln deklarativ anwenden oder mehrere Arbeitsblätter innerhalb derselben Arbeitsmappe verwalten – beispielsweise ein Blatt für den aktuellen Lagerbestand und ein weiteres für historische Bestellungen.

Hinzufügen mehrerer Arbeitsblätter zu einem einzigen Export

Die Aufteilung der Daten in logische Tabellenblätter verbessert die Lesbarkeit, ohne dass separate Downloads erforderlich sind:

public byte[] GenerateMultiSheetReport(
    List<SalesData> sales,
    List<InventoryItem> inventory)
{
    var workbook = WorkBook.Create(ExcelFileFormat.XLSX);

    // Sheet 1 -- Sales summary
    var salesSheet = workbook.CreateWorkSheet("Sales");
    salesSheet["A1"].Value = "Date";
    salesSheet["B1"].Value = "Revenue";
    salesSheet["A1:B1"].Style.Font.Bold = true;

    for (int i = 0; i < sales.Count; i++)
    {
        salesSheet[$"A{i + 2}"].Value = sales[i].Date.ToString("yyyy-MM-dd");
        salesSheet[$"B{i + 2}"].Value = sales[i].Revenue;
    }

    // Sheet 2 -- Inventory snapshot
    var invSheet = workbook.CreateWorkSheet("Inventory");
    invSheet["A1"].Value = "SKU";
    invSheet["B1"].Value = "Name";
    invSheet["C1"].Value = "Quantity";
    invSheet["A1:C1"].Style.Font.Bold = true;

    for (int i = 0; i < inventory.Count; i++)
    {
        invSheet[$"A{i + 2}"].Value = inventory[i].SKU;
        invSheet[$"B{i + 2}"].Value = inventory[i].Name;
        invSheet[$"C{i + 2}"].Value = inventory[i].Quantity;
    }

    using var stream = workbook.ToStream();
    return stream.ToArray();
}
public byte[] GenerateMultiSheetReport(
    List<SalesData> sales,
    List<InventoryItem> inventory)
{
    var workbook = WorkBook.Create(ExcelFileFormat.XLSX);

    // Sheet 1 -- Sales summary
    var salesSheet = workbook.CreateWorkSheet("Sales");
    salesSheet["A1"].Value = "Date";
    salesSheet["B1"].Value = "Revenue";
    salesSheet["A1:B1"].Style.Font.Bold = true;

    for (int i = 0; i < sales.Count; i++)
    {
        salesSheet[$"A{i + 2}"].Value = sales[i].Date.ToString("yyyy-MM-dd");
        salesSheet[$"B{i + 2}"].Value = sales[i].Revenue;
    }

    // Sheet 2 -- Inventory snapshot
    var invSheet = workbook.CreateWorkSheet("Inventory");
    invSheet["A1"].Value = "SKU";
    invSheet["B1"].Value = "Name";
    invSheet["C1"].Value = "Quantity";
    invSheet["A1:C1"].Style.Font.Bold = true;

    for (int i = 0; i < inventory.Count; i++)
    {
        invSheet[$"A{i + 2}"].Value = inventory[i].SKU;
        invSheet[$"B{i + 2}"].Value = inventory[i].Name;
        invSheet[$"C{i + 2}"].Value = inventory[i].Quantity;
    }

    using var stream = workbook.ToStream();
    return stream.ToArray();
}
$vbLabelText   $csharpLabel

Eine vollständige API-Referenz mit Informationen zu Arbeitsmappeneigenschaften, Bereichsoperationen und Diagrammunterstützung finden Sie in der IronXL API-Dokumentation .

 Blazor Export nach Excel: Vollständige Anleitung zur Verwendung von IronXL in C#: Bild 3 - Beispielausgabe für erweiterte Funktionen

Wie geht man effizient mit Fehlern und großen Datensätzen um?

Bei großen Datensätzen können Excel-Exportvorgänge unbemerkt fehlschlagen oder die Leistung beeinträchtigen. Die folgenden Muster gehen auf beide Bedenken ein.

Fehlerbehandlung in der Serviceschicht

Durch die Einbettung der Generierungslogik in den Service (und nicht in die Komponente) wird eine einheitliche Fehlerbehandlung für alle Aufrufer gewährleistet. Es wird empfohlen, IronXL Ausnahmen zunächst weiterzuleiten und sie dann in eine domänenspezifische Ausnahme mit Kontextinformationen darüber, welcher Bericht fehlgeschlagen ist, einzuschließen:

Platzieren Sie einen try/catch Block um die Arbeitsmappengenerierung in GenerateSalesReport, fangen Sie Exception ab und werfen Sie ihn als InvalidOperationException("Failed to generate sales report", ex) erneut aus. In der Blazor Komponente soll der Fehler InvalidOperationException abgefangen und eine benutzerfreundliche Meldung angezeigt werden, ohne interne Details preiszugeben. Protokollieren Sie die innere Ausnahme mit ILogger<t>, die in den Service-Konstruktor eingefügt wird, damit das Entwicklerteam Fehler auf eine bestimmte Arbeitsmappenoperation zurückführen kann. Geben Sie niemals unformatierte Fehlermeldungen an Endbenutzer weiter – Dateipfade, Speicheradressen oder Stacktraces können interne Serverinformationen offenlegen.

Hinweise zu Best Practices für die Fehlerbehandlung finden Sie in der offiziellen Microsoft-Dokumentation. Dort finden Sie Anleitungen zur strukturierten Fehlerprotokollierung in Blazor. Weitere Hinweise zum Erstellen testbarer Dienste in .NET finden Sie in der Microsoft-Dokumentation zur Abhängigkeitsinjektion. Dort wird erklärt, wie Dienste mit Gültigkeitsbereich registriert und aufgelöst werden. Genau dieses Muster wird hier mit ExcelExportService verwendet.

Leistungsüberlegungen für große Datensätze

Für Datensätze mit mehr als einigen tausend Zeilen sollten Sie folgende Ansätze in Betracht ziehen:

Strategien zur Leistungssteigerung beim Excel-Export
Strategie Wann verwenden? IronXL Unterstützung
Streamen Sie direkt zur Antwort Files >10 MB `workbook.ToStream()`
Daten vor dem Export paginieren. UI-gesteuerte Exporte mit Filtern Im Service anwenden, bevor die Arbeitsmappe erstellt wird
Hintergrundjob + Download-Link Reports taking >5 seconds Kombinieren Sie es mit SignalR oder Polling.
Automatische Spaltengröße auf großen Tabellenblättern deaktivieren Sheets with >500 rows Legen Sie stattdessen feste Spaltenbreiten fest.

Die Methode ToStream() von IronXL schreibt direkt in einen Ausgabestream, ohne vorher die gesamte Datei in ein Byte-Array zu laden. Dadurch wird der Speicherverbrauch bei großen Arbeitsmappen reduziert. Weitere Hinweise zur Leistungsfähigkeit finden Sie unter Lesen und Schreiben großer Excel-Dateien mit IronXL.

Welche weiteren Excel-Funktionen unterstützt IronXL ?

Über den einfachen Export hinaus bietet IronXL eine breite Palette von Excel-Funktionen, die den Anforderungen an die Berichtserstellung in der Praxis gerecht werden.

Formeln, benannte Bereiche und Zahlenformatierung

Sie können jede beliebige Excel-Formel mit der gleichen Syntax einbetten, die Sie auch direkt in eine Zelle eingeben würden. IronXL wertet Formeln beim Einlesen aus, sodass die Empfänger der generierten Datei die berechneten Ergebnisse sofort nach dem Öffnen der Tabelle sehen. Benannte Bereiche machen Formeln im Laufe der Zeit lesbarer und wartungsfreundlicher:

// Aggregate formulas on a summary row
worksheet["E2"].Value = "=SUM(D2:D100)";
worksheet["F2"].Value = "=AVERAGE(C2:C100)";
worksheet["G2"].Value = "=COUNTIF(B2:B100,\"Widget A\")";

// Named ranges improve formula readability
worksheet["D2:D100"].Name = "RevenueColumn";
worksheet["E2"].Value = "=SUM(RevenueColumn)";

// Number and date formatting prevents type misinterpretation
worksheet["D2"].Value = 12345.67m;
worksheet["D2"].FormatString = "#,##0.00";
worksheet["A2"].Value = DateTime.Now;
worksheet["A2"].FormatString = "dd/MM/yyyy";
// Aggregate formulas on a summary row
worksheet["E2"].Value = "=SUM(D2:D100)";
worksheet["F2"].Value = "=AVERAGE(C2:C100)";
worksheet["G2"].Value = "=COUNTIF(B2:B100,\"Widget A\")";

// Named ranges improve formula readability
worksheet["D2:D100"].Name = "RevenueColumn";
worksheet["E2"].Value = "=SUM(RevenueColumn)";

// Number and date formatting prevents type misinterpretation
worksheet["D2"].Value = 12345.67m;
worksheet["D2"].FormatString = "#,##0.00";
worksheet["A2"].Value = DateTime.Now;
worksheet["A2"].FormatString = "dd/MM/yyyy";
$vbLabelText   $csharpLabel

Um benannte Bereiche zu definieren und das Zahlenformat explizit festzulegen, stellt IronXL beides als Eigenschaften des Bereichsobjekts bereit. Dadurch wird verhindert, dass Excel Währungswerte als Klartext behandelt – ein häufiges Problem beim Exportieren von Finanzdaten aus Datenbanken, die Werte als Zeichenketten speichern.

Unterstützte Excel-Dateiformate

IronXL kann mehrere Excel-Formate lesen und schreiben, darunter .xlsx, .xls, .csv und .tsv. Das Format wird beim Speichern festgelegt, sodass dieselbe Serviceklasse mit einer kleinen Parameteränderung sowohl Excel- als auch CSV-Exporte unterstützen kann:

// Export as CSV for systems that consume flat files
workbook.SaveAs("report.csv");

// Or stream as CSV for download
using var ms = workbook.ToStream(ExcelFileFormat.CSV);
// Export as CSV for systems that consume flat files
workbook.SaveAs("report.csv");

// Or stream as CSV for download
using var ms = workbook.ToStream(ExcelFileFormat.CSV);
$vbLabelText   $csharpLabel

Diese Flexibilität ist wichtig bei Integrationen, bei denen nachgelagerte Systeme – wie ERP-Plattformen oder Data Warehouses – ein bestimmtes Dateiformat erwarten. Einen vollständigen Funktionsvergleich zwischen IronXL und anderen Excel-Bibliotheken finden Sie auf der IronXL -Funktionsseite .

Microsoft bietet eine gute Referenz zum Verständnis von OOXML-Dateiformaten, falls Sie die interne Struktur von .xlsx-Dateien beim Debuggen unerwarteter Ausgaben verstehen müssen. Das NuGet Paket für IronXL ist auch auf NuGet mit vollständiger Versionshistorie und Kompatibilitätshinweisen aufgeführt.

Wie fange ich mit IronXL für Blazor -Projekte an?

IronXL ist unter einer kostenlosen Entwicklerlizenz erhältlich, die es Ihnen ermöglicht, ohne zeitliche Begrenzung zu entwickeln und zu testen. Für Produktionsanwendungen ist eine Bereitstellungslizenz erforderlich.

Sie können eine kostenlose Testversion direkt von NuGet herunterladen – zum Starten ist keine Registrierung erforderlich. Wenn Sie bereit für die Bereitstellung sind, prüfen Sie die IronXL -Lizenzierungsoptionen, um den Plan zu finden, der zum Umfang der Anwendung passt.

IronXL ist mit allen gängigen .NET Anwendungstypen kompatibel – Blazor Server, Blazor WebAssembly (serverseitig gerendert), ASP.NET Core MVC, Konsolenanwendungen und Windows-Desktopanwendungen. Die Bibliothek ist for .NET Standard 2.0 ausgelegt und somit mit allen unterstützten .NET Versionen von .NET Framework 4.6.2 bis .NET 10 kompatibel. Falls Ihr Projekt auch die PDF-Generierung erfordert, lässt sich IronPDF nahtlos in IronXL integrieren. So können Sie Daten aus derselben Serviceebene entweder als Excel- oder als PDF-Datei exportieren.

Weitere Blazor-spezifische Beispiele finden Sie im Blazor Excel-Export-Tutorial und im ASP.NET Core Exportleitfaden . Zum Lesen vorhandener Tabellenkalkulationen behandelt das C# Excel Reader-Tutorial gängige Importszenarien. Sie können auch nachlesen, wie Sie eine neue Excel-Arbeitsmappe von Grund auf neu erstellen, für Projekte, bei denen Dateien programmatisch und nicht anhand von Vorlagen erstellt werden müssen.

Häufig gestellte Fragen

Wie kann ich Daten aus Blazor Server-Apps nach Excel exportieren?

Mit IronXL können Sie Daten aus Blazor Server-Anwendungen nach Excel exportieren. IronXL ermöglicht es Ihnen, Excel-Dateien direkt vom Server zu erstellen, zu formatieren und herunterzuladen, ohne dass Microsoft Office erforderlich ist.

Muss ich Microsoft Office installiert haben, um IronXL in Blazor zu verwenden?

Nein, Sie benötigen kein installiertes Microsoft Office. IronXL ermöglicht Ihnen die Bearbeitung von Excel-Dateien in Blazor Server-Anwendungen unabhängig von Microsoft Office.

Kann ich Excel-Dateien mit IronXL in Blazor Anwendungen formatieren?

Ja, IronXL bietet Tools zum Formatieren von Excel-Dateien, mit denen Sie das Erscheinungsbild Ihrer Daten direkt über Ihre Blazor Server-App anpassen können.

Ist IronXL mit Blazor Server-Anwendungen kompatibel?

Ja, IronXL lässt sich nahtlos in Blazor Server-Anwendungen integrieren und ermöglicht so den einfachen Export und die Handhabung von Excel-Dateien.

Welche Vorteile bietet die Verwendung von IronXL für den Excel-Export in Blazor?

IronXL bietet eine unkomplizierte Möglichkeit, Excel-Dateien zu erstellen und zu bearbeiten, ohne dass Office erforderlich ist, und ist somit eine effiziente Lösung für den Datenexport in Blazor -Apps.

Kann IronXL große Excel-Dateien in Blazor Server-Anwendungen verarbeiten?

Ja, IronXL ist so konzipiert, dass es große Excel-Dateien effizient innerhalb von Blazor Server-Anwendungen verarbeiten kann.

Welche Arten von Excel-Dateien kann ich mit IronXL in einer Blazor -App erstellen?

Mit IronXL können Sie verschiedene Arten von Excel-Dateien, darunter XLSX, XLS und CSV, direkt in Ihrer Blazor Anwendung erstellen.

Ist es möglich, Excel-Dateien aus einer Blazor Server-Anwendung mit IronXL herunterzuladen?

Ja, IronXL unterstützt das Herunterladen von Excel-Dateien direkt aus einer Blazor Server-App und bietet so ein nahtloses Benutzererlebnis.

Wie verbessert IronXL die Excel-Exportfunktionalität in Blazor im Vergleich zu anderen Lösungen?

IronXL vereinfacht den Export von Excel-Dateien in Blazor , indem es die Notwendigkeit von Microsoft Office beseitigt und sich direkt in Ihre Serveranwendung integriert.

Was macht IronXL zu einer guten Wahl für Blazor Entwickler?

IronXL ist eine gute Wahl für Blazor -Entwickler, da es robuste Excel-Verarbeitungsfunktionen bietet, keine Office-Installation erfordert und sich problemlos in Blazor Server-Apps integrieren lässt.

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