Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Erstellen einer Excel-API for .NET Core: XLSX-Dateien erstellen, lesen und exportieren

Mit IronXL ist die Entwicklung einer Excel-API for .NET Core unkompliziert. Installieren Sie das Paket, erstellen Sie ein WorkBook, füllen Sie die Zellen und geben Sie den Stream direkt zurück - Microsoft Office ist nicht erforderlich.

Install-Package IronXl.Excel

IronXL übernimmt die Erstellung von XLSX-Dateien, den Datenimport, den Export in verschiedene Formate und die Zellformatierung vollständig im verwalteten .NET -Code. Es läuft unter Windows, Linux und macOS und ist somit eine praktische Wahl für jede ASP.NET Core API, die programmatische Excel-Unterstützung benötigt.

Wie installiert man IronXL in einem .NET Core -Projekt?

Fügen Sie IronXL über die NuGet -Paket-Manager-Konsole zu jedem .NET 10-Projekt hinzu:

Install-Package IronXl.Excel

Alternativ können Sie IronXL über die Visual Studio NuGet -Benutzeroberfläche installieren, indem Sie danach suchen. Der Paketname auf NuGet lautet IronXl.Excel .

Nach der Installation fügen Sie using IronXL; zu jeder Datei hinzu, die Arbeitsmappen erstellt oder liest. Es werden weder Office-Interop-Bibliotheken noch eine COM-Registrierung oder eine Installation von Microsoft Excel auf dem Host-Rechner benötigt – IronXL ist vollständig in sich abgeschlossen.

IronXL zielt auf .NET Standard 2.0 und höher ab, was bedeutet, dass dieselbe Bibliothek for .NET Core, .NET 5/6/7/8/9/10- und .NET Framework Projekte funktioniert. Die IronXL Dokumentation beschreibt alle unterstützten Umgebungen im Detail.

Wie erstellt man Excel-Dateien programmatisch in .NET Core?

Mit der intuitiven API von IronXL lassen sich Excel-Dokumente von Grund auf mit nur wenigen Codezeilen erstellen. Die Bibliothek bietet durch ein übersichtliches Objektmodell die volle Kontrolle über Arbeitsmappen, Arbeitsblätter, Zellstile und Formeln.

Hier ist eine Controller-Aktion, die eine neue Excel-Arbeitsmappe mit formatierten Daten erstellt, die Tabellenblattverwaltung demonstriert und Zellstile anwendet:

using IronXL;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
    [HttpGet("create-report")]
    public IActionResult CreateSalesReport()
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Set header labels in the first row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Q1 Sales";
        worksheet["C1"].Value = "Q2 Sales";
        worksheet["D1"].Value = "Total";

        // Bold headers and apply a blue background with white text
        worksheet["A1:D1"].Style.Font.Bold = true;
        worksheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
        worksheet["A1:D1"].Style.Font.SetColor("#FFFFFF");

        // Add data rows
        worksheet["A2"].Value = "Widget Pro";
        worksheet["B2"].Value = 15000;
        worksheet["C2"].Value = 18500;
        worksheet["D2"].Formula = "=B2+C2";

        worksheet["A3"].Value = "Gadget Plus";
        worksheet["B3"].Value = 22000;
        worksheet["C3"].Value = 24000;
        worksheet["D3"].Formula = "=B3+C3";

        // Apply currency number format to sales columns
        worksheet["B2:D3"].Style.Format = "$#,##0";

        // Stream the XLSX file back to the caller
        var stream = workbook.ToStream();
        return File(
            stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "SalesReport.xlsx");
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
    [HttpGet("create-report")]
    public IActionResult CreateSalesReport()
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Set header labels in the first row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Q1 Sales";
        worksheet["C1"].Value = "Q2 Sales";
        worksheet["D1"].Value = "Total";

        // Bold headers and apply a blue background with white text
        worksheet["A1:D1"].Style.Font.Bold = true;
        worksheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
        worksheet["A1:D1"].Style.Font.SetColor("#FFFFFF");

        // Add data rows
        worksheet["A2"].Value = "Widget Pro";
        worksheet["B2"].Value = 15000;
        worksheet["C2"].Value = 18500;
        worksheet["D2"].Formula = "=B2+C2";

        worksheet["A3"].Value = "Gadget Plus";
        worksheet["B3"].Value = 22000;
        worksheet["C3"].Value = 24000;
        worksheet["D3"].Formula = "=B3+C3";

        // Apply currency number format to sales columns
        worksheet["B2:D3"].Style.Format = "$#,##0";

        // Stream the XLSX file back to the caller
        var stream = workbook.ToStream();
        return File(
            stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "SalesReport.xlsx");
    }
}
$vbLabelText   $csharpLabel

Ausgabedatei im Excel-Format

Erstellen einer Excel-API for .NET Core: Erstellen, Lesen und Exportieren von XLSX-Dateien: Bild 1 – Von der .NET Core API generierte Excel-Datei

WorkBook.Create() unterstützt sowohl das XLSX- als auch das XLS-Format. Die Methode CreateWorkSheet() fügt ein benanntes Tabellenblatt hinzu, in dem Sie Zellen mit Werten füllen, Excel-Formeln für Berechnungen anwenden und das Layout über Zellbereiche steuern. Die Berechnungs-Engine von IronXL wertet Formeln automatisch aus, wenn sich die Arbeitsmappendaten ändern. Dies schließt auch die Unterstützung von Arrayformeln ein, die in komplexeren Datenanalyseszenarien verwendet werden.

Zellstile umfassen weit mehr als nur Fettdruck und Farbe. Mit der Zellformatierungs-API können Sie Zahlenformate, Rahmen, Ausrichtung, Schriftgrößen und mehr festlegen – alles ohne die COM-Schicht zu berühren. Dadurch ist es sicher, das Programm in containerisierten Linux-Umgebungen auszuführen, in denen kein Anzeigekontext vorhanden ist.

Wie fügt man einer Arbeitsmappe mehrere Arbeitsblätter hinzu?

Eine einzelne Arbeitsmappe kann beliebig viele Arbeitsblätter enthalten. Rufen Sie workbook.CreateWorkSheet("SheetName") für jeden benötigten Tab an. Die Arbeitsblätter sind später über den Namen unter workbook.GetWorkSheet("SheetName") oder über den Index unter workbook.WorkSheets[0] zugänglich.

Dieses Muster ist nützlich, wenn man Berichte mit Zusammenfassung und Details erstellen möchte: Ein Tabellenblatt enthält die aggregierten Summen, während die untergeordneten Tabellenblätter die Rohdaten der Transaktionen enthalten. Die Dokumentation zur Tabellenblattverwaltung beschreibt das Umbenennen, Neuanordnen und Entfernen von Tabellenblättern zur Laufzeit.

Wie lassen sich Excel-Daten am besten in Web-APIs einlesen?

Der Import von Daten aus vom Benutzer hochgeladenen Excel-Dateien ist für jede Webanwendung, die Tabellenkalkulationsinhalte verarbeitet, unerlässlich. IronXL ermöglicht das direkte Lesen von Excel-Tabellen – Laden aus einem Datenstrom, Iterieren über die Zeilen und Auslesen der eingegebenen Werte aus jeder Zelle.

[HttpPost("import")]
public IActionResult ImportExcelData(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");

    using var stream = file.OpenReadStream();

    // Load the workbook directly from the upload stream
    WorkBook workbook = WorkBook.Load(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    var records = new List<Dictionary<string, object>>();

    // Start at row 2 to skip the header row
    for (int row = 2; row <= worksheet.RowCount; row++)
    {
        var record = new Dictionary<string, object>
        {
            ["Product"] = worksheet[$"A{row}"].StringValue,
            ["Sales"]   = worksheet[$"B{row}"].DecimalValue,
            ["Date"]    = worksheet[$"C{row}"].DateTimeValue
        };
        records.Add(record);
    }

    return Ok(new {
        message     = "Import successful",
        recordCount = records.Count,
        data        = records
    });
}
[HttpPost("import")]
public IActionResult ImportExcelData(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");

    using var stream = file.OpenReadStream();

    // Load the workbook directly from the upload stream
    WorkBook workbook = WorkBook.Load(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    var records = new List<Dictionary<string, object>>();

    // Start at row 2 to skip the header row
    for (int row = 2; row <= worksheet.RowCount; row++)
    {
        var record = new Dictionary<string, object>
        {
            ["Product"] = worksheet[$"A{row}"].StringValue,
            ["Sales"]   = worksheet[$"B{row}"].DecimalValue,
            ["Date"]    = worksheet[$"C{row}"].DateTimeValue
        };
        records.Add(record);
    }

    return Ok(new {
        message     = "Import successful",
        recordCount = records.Count,
        data        = records
    });
}
$vbLabelText   $csharpLabel

Ausgabe

Erstellen einer Excel-API for .NET Core: Erstellen, Lesen und Exportieren von XLSX-Dateien: Bild 2 – Ausgabe mit den erfolgreich importierten Excel-Daten

WorkBook.Load() öffnet Excel-Dateien aus Datenströmen, Dateipfaden oder Byte-Arrays. Der Zugriff auf die Zellen erfolgt über die Indexersyntax worksheet["A1"] oder durch Iteration über einen benannten Zellbereich . IronXL übernimmt die Datenvalidierung automatisch und stellt typsichere Zugriffsmethoden bereit -- IntValue, DecimalValue, DateTimeValue, StringValue -- sodass der konsumierende Code sauber und vorhersehbar bleibt.

Wie filtert und sortiert man importierte Daten?

Nach dem Laden einer Arbeitsmappe rufen Sie .SortAscending() oder .SortDescending() auf einem beliebigen Range Objekt auf, um die Zeilen zu sortieren. Zum Filtern können Sie die Zellen durchlaufen und die Bedingungen direkt auswerten oder die Daten zur Weiterverarbeitung in eine LINQ-Collection übertragen. Der Leitfaden zum Sortieren und Filtern veranschaulicht beide Vorgehensweisen anhand praktischer Beispiele.

Arbeiten mit großen Uploads? IronXL liest nur die aufgerufenen Zellen, sodass es nicht nötig ist, eine ganze mehrere Megabyte große Datei in den Speicher zu laden, bevor eine bestimmte Spalte abgefragt wird. Durch diesen Ansatz des verzögerten Zugriffs bleibt der Speicherverbrauch auch bei der Verarbeitung von Arbeitsmappen mit Zehntausenden von Zeilen stabil.

Wie kann man Excel-Daten in verschiedene Formate exportieren?

Anwendungen müssen häufig Tabellenkalkulationen in mehreren Ausgabeformaten anbieten können. IronXL unterstützt den Export nach XLSX, XLS, CSV, JSON und HTML mit einem einzigen Methodenaufruf, ohne dass externe Konvertierungstools erforderlich sind.

[HttpGet("export/{format}")]
public IActionResult ExportData(string format)
{
    // Load a pre-designed template workbook
    WorkBook workbook = WorkBook.Load("template.xlsx");

    return format.ToLower() switch
    {
        "xlsx" => File(
            workbook.ToStream(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx"),

        "csv"  => File(
            workbook.ToStream(FileFormat.CSV),
            "text/csv",
            "export.csv"),

        "json" => Ok(workbook.ToJson()),

        _      => BadRequest("Unsupported format")
    };
}
[HttpGet("export/{format}")]
public IActionResult ExportData(string format)
{
    // Load a pre-designed template workbook
    WorkBook workbook = WorkBook.Load("template.xlsx");

    return format.ToLower() switch
    {
        "xlsx" => File(
            workbook.ToStream(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx"),

        "csv"  => File(
            workbook.ToStream(FileFormat.CSV),
            "text/csv",
            "export.csv"),

        "json" => Ok(workbook.ToJson()),

        _      => BadRequest("Unsupported format")
    };
}
$vbLabelText   $csharpLabel

Die Verwendung von Excel-Vorlagen mit vordefinierten Layouts beschleunigt die Berichtserstellung. Laden Sie eine vordefinierte Arbeitsmappe, fügen Sie dynamische Daten in benannte Zellen oder Bereiche ein und streamen Sie anschließend das Ergebnis. Dieser Ansatz eignet sich für Verkaufsberichte, Rechnungen und Compliance-Dokumente, bei denen eine einheitliche Formatierung wichtiger ist als Flexibilität.

Dank der plattformübergreifenden Unterstützung von IronXL funktionieren diese Dateivorgänge unter Windows, Linux und macOS identisch, wodurch es sich für containerisierte .NET Core Bereitstellungen eignet. Mehr dazu im IronXL -Plattform-Leitfaden .

Wie exportiert man Daten aus einer .NET Core API in eine CSV-Datei?

Rufen Sie workbook.ToStream(FileFormat.CSV) auf und geben Sie es mit dem Inhaltstyp text/csv zurück, wie oben gezeigt. Bei Arbeitsmappen mit mehreren Tabellenblättern kann jedes Tabellenblatt unabhängig exportiert werden, indem auf workbook.WorkSheets[index] zugegriffen und .ToStream(FileFormat.CSV) auf dem Tabellenblattobjekt aufgerufen wird. Die Dokumentation zum CSV-Export behandelt den Umgang mit Trennzeichen, Kodierung und Datumsformatoptionen.

Wie wendet man bedingte Formatierung und Datenbalken an?

Über die grundlegenden Zellstile hinaus unterstützt IronXL bedingte Formatierungsregeln – Zellen oberhalb eines Schwellenwerts werden grün hervorgehoben, negative Werte rot markiert oder Farbverlaufsbalken angewendet, um Trends direkt in der Tabelle sichtbar zu machen, ohne dass eine Nachbearbeitung in einem separaten Tool erforderlich ist.

Die bedingte Formatierung ist besonders wertvoll in Finanz-Dashboards und KPI-Berichten, wo Leser Ausreißer auf einen Blick erkennen müssen. Anstatt darauf angewiesen zu sein, dass der Empfänger nach dem Herunterladen seine eigene Formatierung vornimmt, sind die Regeln in die XLSX-Datei eingebettet und werden automatisch ausgewertet, wenn die Datei in einer beliebigen Version von Microsoft Excel oder einem kompatiblen Viewer geöffnet wird.

Die bedingte Formatierung wird über die ConditionalFormatting-Eigenschaft des Arbeitsblatts festgelegt. Die Regeln werden auf einen benannten Zellbereich angewendet und unterstützen verschiedene Bedingungstypen: Zellwertvergleiche, formelbasierte Regeln, Farbskalen, die Werte von niedrig nach hoch einstufen, und Datenbalken-Overlays, die wie Balkendiagramme in Zellen funktionieren. Die Open XML-Spezifikation definiert die zugrunde liegende Regelstruktur, die IronXL in die XLSX-Datei schreibt.

Eine vollständige Anleitung zum Anwenden von Farbskalen, Symbolsätzen und Datenbalken finden Sie im Tutorial zur bedingten Formatierung in der IronXL Dokumentation.

Wie schützt man Excel-Dateien und -Arbeitsblätter?

Die Verteilung von Berichten, die sensible Daten enthalten, erfordert eine Zugriffskontrolle. IronXL unterstützt sowohl Passwortschutz auf Arbeitsmappenebene als auch auf Arbeitsblattebene:

Arbeitsmappenkennwort : Legen Sie workbook.Password = "secret" fest, bevor Sie .SaveAs() aufrufen, um die XLSX-Datei zu verschlüsseln. Empfänger müssen das Kennwort eingeben, um die Datei in Excel zu öffnen.

  • Arbeitsblattschutz : Rufen Sie worksheet.ProtectSheet("password") auf, um die Zellenbearbeitung zu sperren, während das Blatt weiterhin angezeigt werden kann. Bestimmte Bereiche können für die Dateneingabe über die AllowEditRange API freigeschaltet werden.
  • Schreibgeschützte Verteilung : Für Dokumente, die niemals bearbeitet werden sollen, kombinieren Sie den Tabellenblattschutz mit der Dateiverschlüsselung.

Passwortgeschützte XLSX-Dateien verwenden standardmäßig die AES-128-Verschlüsselung, denselben Standard, der auch in nativen Excel-Dateien verwendet wird. Das bedeutet, dass eine mit IronXL geschützte Datei vollständig mit der in Excel integrierten Funktion zum Öffnen von Dateien kompatibel ist – auf Empfängerseite ist kein spezieller Viewer erforderlich.

Diese Sicherheitsfunktionen ergänzen das Standard-Sicherheitsmodell von .NET Core und sind besonders nützlich beim Erstellen von Endpunkten für Finanz- oder Personalberichterstattung. Die Dokumentation zum Dateischutz enthält die vollständige API-Referenz.

Wie arbeitet man mit Excel-Formeln in .NET?

Die in IronXL integrierte Berechnungs-Engine wertet Standard-Excel-Formeln zur Laufzeit aus, sodass die API berechnete Werte zurückgeben kann, ohne dass diese vorher auf der Festplatte gespeichert und in Excel erneut geöffnet werden müssen. Weisen Sie einer beliebigen Zelle der Eigenschaft .Formula eine Formelzeichenfolge zu:

// Sum a column and place the result in a footer row
worksheet[$"B{lastRow}"].Formula = $"=SUM(B2:B{lastRow - 1})";

// Calculate an average across a range
worksheet[$"C{lastRow}"].Formula = $"=AVERAGE(C2:C{lastRow - 1})";

// Retrieve the computed value immediately
decimal total = worksheet[$"B{lastRow}"].DecimalValue;
// Sum a column and place the result in a footer row
worksheet[$"B{lastRow}"].Formula = $"=SUM(B2:B{lastRow - 1})";

// Calculate an average across a range
worksheet[$"C{lastRow}"].Formula = $"=AVERAGE(C2:C{lastRow - 1})";

// Retrieve the computed value immediately
decimal total = worksheet[$"B{lastRow}"].DecimalValue;
$vbLabelText   $csharpLabel

IronXL unterstützt die meisten Standardfunktionen von Excel, einschließlich mathematischer, statistischer, Text-, Datums- und Nachschlagekategorien. Für fortgeschrittene Szenarien werden auch Arrayformeln (Ctrl+Shift+Enter Semantik) unterstützt. Da die Formelauswertung innerhalb des .NET Prozesses erfolgt, entfällt der Roundtrip zu einem externen Berechnungsdienst – die Ergebnisse stehen unmittelbar nach der Zuweisung der Formel zur Verfügung, wodurch die API-Antwortzeiten auch bei Berechnungen über Tausende von Zeilen vorhersehbar bleiben. Die Formelunterstützungsreferenz listet alle unterstützten Funktionen auf.

Was sind Ihre nächsten Schritte?

Die Entwicklung einer Excel-API mit IronXL verleiht .NET Core Anwendungen solide Möglichkeiten zur Arbeit mit Tabellenkalkulationen. Von der Erstellung von XLSX-Dateien mit formatierten Daten und berechneten Formeln bis hin zum Importieren von Benutzer-Uploads und dem Exportieren von Daten in verschiedenen Formaten – IronXL deckt alle Aspekte der programmatischen Tabellenkalkulationsbearbeitung plattformübergreifend und ohne Office-Anwendungen ab.

Nutzen Sie diese Ressourcen, um weitere Informationen zu erhalten:

Starten Sie eine kostenlose Testphase , um IronXL in einem Live-Projekt zu testen, oder prüfen Sie die Lizenzoptionen, um den richtigen Plan für den Produktionseinsatz zu finden.

Häufig gestellte Fragen

Was ist IronXL?

IronXL ist eine .NET Excel-Bibliothek, mit der Entwickler Excel-Dateien programmatisch in C# erstellen, lesen und exportieren können, ohne dass Microsoft Office oder COM-Interop erforderlich ist.

Wie erstellt man eine Excel-Datei in .NET Core ohne Office?

Rufen Sie WorkBook.Create(ExcelFileFormat.XLSX) auf, um eine neue Arbeitsmappe zu erstellen, fügen Sie mit CreateWorkSheet() Tabellenblätter hinzu, füllen Sie Zellen mit der Syntax worksheet['A1'].Value und streamen Sie das Ergebnis mit workbook.ToStream().

Wie liest man eine hochgeladene Excel-Datei in ASP.NET Core?

Übergeben Sie den IFormFile-Stream an WorkBook.Load(stream), greifen Sie auf das DefaultWorkSheet zu und iterieren Sie mit worksheet.RowCount über die Zeilen. Typisierte Zugriffsmethoden wie DecimalValue und DateTimeValue extrahieren stark typisierte Daten aus jeder Zelle.

Kann IronXL Excel-Daten in die Formate CSV oder JSON exportieren?

Ja. Rufen Sie workbook.ToStream(FileFormat.CSV) für eine CSV-Ausgabe oder workbook.ToJson() für eine JSON-Darstellung der Arbeitsmappendaten auf.

Läuft IronXL unter Linux und macOS?

Ja. IronXL ist for .NET Standard 2.0 und höher ausgelegt und läuft unter Windows, Linux und macOS ohne Installation von Microsoft Office oder einer COM-Schicht.

Wie kann man eine Excel-Datei mit IronXL mit einem Passwort schützen?

Setzen Sie `workbook.Password` auf einen String, bevor Sie `SaveAs()` aufrufen. Um ein Arbeitsblatt auf Tabellenblattebene zu schützen, rufen Sie `worksheet.ProtectSheet('password')` auf, um die Bearbeitung von Zellen zu verhindern, während das Lesen des Blattes weiterhin möglich ist.

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