Lesen von Excel-Dateien in ASP.NET MVC mit C# und IronXL

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL ermöglicht es ASP.NET MVC-Entwicklern, Excel-Dateien direkt in C# ohne Microsoft Office-Abhängigkeiten zu lesen und Excel-Daten in System.Data.DataTable zu konvertieren, um sie in Webansichten mit nur wenigen Codezeilen anzuzeigen.

Schnellstart: Excel-Blatt in DataTable in MVC laden und konvertieren

Dieses Beispiel zeigt, wie Sie in Sekundenschnelle loslegen können: Laden Sie eine Excel-Arbeitsmappe, wählen Sie das erste Arbeitsblatt und konvertieren Sie es mit IronXL in eine System.Data.DataTable - ohne Interop, ohne Aufwand.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronXL mit dem NuGet-Paketmanager.

    PM > Install-Package IronXL.Excel

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var dataTable = IronXL.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true);
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronXL in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Wie erstelle ich ein ASP.NET-Projekt zum Lesen in Excel?

Warum eignet sich Visual Studio 2022 am besten für diese Aufgabe?

Erstellen Sie mit Visual Studio 2022 ein neues ASP.NET-Projekt. Visual Studio 2022 bietet hervorragende Unterstützung für .NET 6+ Frameworks, verbessertes IntelliSense für IronXL-Methoden und eine bessere Leistung bei der Arbeit mit großen Excel-Dateien. Die NuGet-Integration der IDE macht die Installation von IronXL besonders einfach.

Welche Projektvorlage soll ich wählen?

Für das Lesen von Excel-Dateien in ASP.NET wählen Sie die Vorlage "ASP.NET Core Web App (Model-View-Controller)". Diese Vorlage bietet eine saubere MVC-Struktur, die die Datenverarbeitung (Excel-Lesen) von der Präsentationslogik trennt. Das MVC-Muster funktioniert perfekt mit der IronXL-Konvertierung von DataTable, so dass Sie Tabellenkalkulationen nahtlos in Controllern laden und in Ansichten anzeigen können.

Welche .NET-Version wird empfohlen?

IronXL funktioniert mit .NET Framework 4.6.2+ und .NET Core 3.1+. Für neue ASP.NET MVC-Projekte sollten Sie .NET 6.0 oder höher verwenden, um optimale Leistung und Sicherheit zu gewährleisten. Diese Versionen bieten eine verbesserte Speicherverwaltung bei der Verarbeitung großer Excel-Dateien und eine bessere async/await-Unterstützung für die Konvertierung von Tabellenkalkulationsdateien.

Wie installiere ich die IronXL-Bibliothek?

Was sind die Installationsvoraussetzungen?

Nutzen Sie IronXL heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer


Welche Installationsmethode ist am schnellsten?

Nach der Erstellung des neuen Projekts installieren Sie die IronXL-Bibliothek. Folgen Sie diesen Schritten, um IronXL zu installieren. Öffnen Sie die NuGet-Pakete-Verwaltungskonsole und führen Sie den folgenden Befehl aus:

Install-Package IronXL.Excel

Wie kann ich die Installation überprüfen?

Um zu überprüfen, ob IronXL richtig installiert ist, überprüfen Sie die Abhängigkeiten Ihres Projekts im Solution Explorer. IronXL" sollte unter "Abhängigkeiten > Pakete" aufgeführt sein. Versuchen Sie außerdem, using IronXL; am Anfang Ihrer Controller-Datei hinzuzufügen - IntelliSense sollte den Namensraum sofort erkennen. Informationen zur Behebung von Installationsproblemen finden Sie im Lizenzierungsleitfaden.

Wie kann ich eine Excel-Datei in meinem Controller lesen?

Welcher Code gehört in die Controller-Aktion?

Öffnen Sie den Standard-Controller in Ihrem ASP.NET-Projekt (z. B. HomeController.cs) und ersetzen Sie die Methode Index durch den folgenden Code:

using IronXL;
using System.Data;

public ActionResult Index()
{
    // Load the Excel workbook from a specified path.
    WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");

    // Access the first worksheet from the workbook.
    WorkSheet workSheet = workBook.WorkSheets.First();

    // Convert the worksheet data to a DataTable object.
    // The 'true' parameter uses the first row as column headers
    var dataTable = workSheet.ToDataTable(true);

    // Send the DataTable to the view for rendering.
    return View(dataTable);
}
using IronXL;
using System.Data;

public ActionResult Index()
{
    // Load the Excel workbook from a specified path.
    WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");

    // Access the first worksheet from the workbook.
    WorkSheet workSheet = workBook.WorkSheets.First();

    // Convert the worksheet data to a DataTable object.
    // The 'true' parameter uses the first row as column headers
    var dataTable = workSheet.ToDataTable(true);

    // Send the DataTable to the view for rendering.
    return View(dataTable);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Warum DataTable anstelle von anderen Formaten verwenden?

In der Aktionsmethode Index laden Sie die Excel-Datei mit der Load-Methode von IronXL. Der Pfad der Excel-Datei (einschließlich des Dateinamens) wird als Parameter für den Methodenaufruf bereitgestellt. Wählen Sie dann das erste Excel-Blatt als Arbeitsblatt aus und laden Sie die darin enthaltenen Daten in ein DataTable-Objekt. Abschließend senden Sie die DataTable an das Frontend.

DataTable ist ideal für ASP.NET MVC, da es sich nahtlos in Razor-Ansichten integrieren lässt und integrierte Unterstützung für die Iteration durch Zeilen und Spalten bietet. Im Gegensatz zu benutzerdefinierten Objekten erfordert DataTable kein Model Mapping und verarbeitet gemischte Datentypen automatisch. Sie können DataSet und DataTable bei Bedarf auch zurück nach Excel exportieren.

Was ist mit der Fehlerbehandlung bei fehlenden Dateien?

Eine robuste Fehlerbehandlung sorgt dafür, dass Ihre Anwendung nicht abstürzt, wenn Excel-Dateien fehlen oder beschädigt sind. Hier ist eine verbesserte Version mit korrekter Ausnahmebehandlung:

public ActionResult Index()
{
    try
    {
        string filePath = @"C:\Files\Customer Data.xlsx";

        // Check if file exists before attempting to load
        if (!System.IO.File.Exists(filePath))
        {
            ViewBag.Error = "Excel file not found at specified location.";
            return View(new DataTable());
        }

        // Load workbook with error handling
        WorkBook workBook = WorkBook.Load(filePath);

        // Verify worksheet exists
        if (workBook.WorkSheets.Count == 0)
        {
            ViewBag.Error = "No worksheets found in the Excel file.";
            return View(new DataTable());
        }

        WorkSheet workSheet = workBook.WorkSheets.First();
        var dataTable = workSheet.ToDataTable(true);

        return View(dataTable);
    }
    catch (Exception ex)
    {
        // Log the exception (consider using a logging framework)
        ViewBag.Error = $"Error reading Excel file: {ex.Message}";
        return View(new DataTable());
    }
}
public ActionResult Index()
{
    try
    {
        string filePath = @"C:\Files\Customer Data.xlsx";

        // Check if file exists before attempting to load
        if (!System.IO.File.Exists(filePath))
        {
            ViewBag.Error = "Excel file not found at specified location.";
            return View(new DataTable());
        }

        // Load workbook with error handling
        WorkBook workBook = WorkBook.Load(filePath);

        // Verify worksheet exists
        if (workBook.WorkSheets.Count == 0)
        {
            ViewBag.Error = "No worksheets found in the Excel file.";
            return View(new DataTable());
        }

        WorkSheet workSheet = workBook.WorkSheets.First();
        var dataTable = workSheet.ToDataTable(true);

        return View(dataTable);
    }
    catch (Exception ex)
    {
        // Log the exception (consider using a logging framework)
        ViewBag.Error = $"Error reading Excel file: {ex.Message}";
        return View(new DataTable());
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wie kann ich verschiedene Arbeitsblätter auswählen?

IronXL bietet mehrere Möglichkeiten zur Auswahl und Arbeit mit bestimmten Arbeitsblättern. Sie können auf Arbeitsblätter nach Index oder Namen zugreifen oder alle verfügbaren Blätter durchgehen:

// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");

// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];

// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;

// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    // Process each worksheet
}
// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");

// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];

// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;

// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    // Process each worksheet
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wie kann ich Excel-Daten auf einer Webseite anzeigen?

Welcher Ansichtscode ist erforderlich?

Das nächste Beispiel zeigt, wie man die DataTable, die im vorherigen Beispiel zurückgegeben wurde, in einem Webbrowser anzeigt.

Die in diesem Beispiel verwendete Excel-Arbeitsdatei ist unten abgebildet:

Excel spreadsheet with customer names, shipping costs, and unit prices - sample data for web display tutorial

Excel-Datei

Öffnen Sie die index.cshtml (Indexansicht) und ersetzen Sie den Code durch den folgenden HTML-Code:

@{
    ViewData["Title"] = "Home Page";
}

@using System.Data
@model DataTable

<div class="text-center">
    <h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>

@* Check for errors first *@
@if (ViewBag.Error != null)
{
    <div class="alert alert-danger">
        @ViewBag.Error
    </div>
}

@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <p>No data to display.</p>
}
@{
    ViewData["Title"] = "Home Page";
}

@using System.Data
@model DataTable

<div class="text-center">
    <h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>

@* Check for errors first *@
@if (ViewBag.Error != null)
{
    <div class="alert alert-danger">
        @ViewBag.Error
    </div>
}

@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <p>No data to display.</p>
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Warum Bootstrap für die Gestaltung von Tabellen verwenden?

Der obige Code verwendet das von der Index-Methode zurückgegebene DataTable als Modell. Jede Zeile aus der Tabelle wird mit einer @for-Schleife auf der Webseite gedruckt, einschließlich Bootstrap-Formatierung zur Dekoration.

Bootstrap bietet responsive Tabellendesigns, die sich automatisch an unterschiedliche Bildschirmgrößen anpassen - ein entscheidender Faktor für moderne Webanwendungen. Die Klasse table-dark erzeugt eine attraktive, leicht zu lesende Tabelle mit dunklem Thema. Für fortgeschrittene Excel-Formatierungen wie Zellenränder und -ausrichtung oder Hintergrundmuster und -farben bietet IronXL zusätzliche Methoden zum direkten Zugriff auf strukturierte Daten.

Wie sieht die endgültige Ausgabe aus?

Die Ausführung des Projekts führt zu den unten gezeigten Ergebnissen:

Bootstrap table displaying Excel customer data with names, shipping costs, and unit prices in ASP.NET MVC application

Bootstrap-Tabelle

Wie kann ich Kopfzeilen in die Tabelle einfügen?

Um Spaltenüberschriften aus Ihrer Excel-Datei anzuzeigen, ändern Sie den Ansichtscode so, dass er einen Abschnitt für Tabellenüberschriften enthält. Beim Aufruf von ToDataTable(true), verwendet IronXL automatisch die erste Zeile als Spaltennamen:

@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <thead>
            <tr>
                @foreach (DataColumn column in Model.Columns)
                {
                    <th>@column.ColumnName</th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <thead>
            <tr>
                @foreach (DataColumn column in Model.Columns)
                {
                    <th>@column.ColumnName</th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Diese Erweiterung zeigt korrekte Spaltenüberschriften wie "Kundenname", "Versandkosten" und "Stückpreis" in Ihrer Excel-Datei an. Für komplexere Szenarien mit benannten Bereichen oder benannten Tabellen bietet IronXL zusätzliche Methoden für den direkten Zugriff auf strukturierte Daten.

Häufig gestellte Fragen

Wie lese ich Excel-Dateien in ASP.NET MVC ohne Microsoft Office?

IronXL ermöglicht es Ihnen, Excel-Dateien direkt in C# zu lesen, ohne auf Microsoft Office angewiesen zu sein. Installieren Sie IronXL einfach über NuGet und verwenden Sie dann WorkBook.Load(), um Ihre Excel-Datei zu öffnen und sie mit nur einer Zeile Code in eine DataTable zu konvertieren: var dataTable = IronXL.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true);

Was ist der schnellste Weg, um Excel-Daten in ASP.NET in DataTable zu konvertieren?

IronXL bietet die Methode ToDataTable(), die Excel-Arbeitsblätter sofort in System.Data.DataTable-Objekte konvertiert. Nachdem Sie Ihre Arbeitsmappe mit IronXL geladen haben, greifen Sie auf ein beliebiges Arbeitsblatt zu und rufen ToDataTable(true) auf, um die Kopfzeilen einzuschließen. Diese Konvertierung erfordert nur eine Zeile Code und funktioniert nahtlos mit ASP.NET MVC-Ansichten.

Welche .NET-Version sollte ich für die Verarbeitung von Excel-Dateien in Webanwendungen verwenden?

IronXL unterstützt .NET Framework 4.6.2+ und .NET Core 3.1+. Für neue ASP.NET MVC-Projekte wird .NET 6.0 oder höher empfohlen, da es eine verbesserte Speicherverwaltung bei der Verarbeitung großer Excel-Dateien mit IronXL und eine bessere async/await-Unterstützung für Tabellenkalkulationsoperationen bietet.

Welche Visual Studio-Projektvorlage eignet sich am besten für Excel-Lesefunktionen?

Wählen Sie bei der Erstellung Ihres Projekts die Vorlage "ASP.NET Core Web App (Model-View-Controller)". Diese MVC-Struktur ergänzt perfekt die DataTable-Konvertierungsfunktion von IronXL, die es Ihnen ermöglicht, Excel-Dateien in Controllern zu laden und zu verarbeiten, während die Daten in Ansichten sauber dargestellt werden.

Wie kann ich die Excel-Lesebibliothek in meinem ASP.NET-Projekt installieren?

Installieren Sie IronXL über die NuGet-Paketmanager-Konsole, indem Sie "Install-Package IronXL.Excel" ausführen. Überprüfen Sie nach der Installation, ob es richtig hinzugefügt wurde, indem Sie Ihre Projektabhängigkeiten überprüfen und "using IronXL;" zu Ihrem Controller hinzufügen - IntelliSense sollte den Namespace sofort erkennen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 1,765,830 | Version: 2025.12 gerade veröffentlicht