IRONXL VERWENDEN

Wie man Excel in ASP.NET anzeigt

Regan Pun
Regan Pun
27. Juni 2023
Aktualisiert 31. März 2024
Teilen Sie:

Dieses umfassende Tutorial zeigt, wie man einen Excel-Viewer mit ASP.NET MVC und IronXL erstellt. Mit diesem Viewer können Benutzer Excel-Dateien direkt von ihrer Webseite aus anzeigen, bearbeiten und durch sie navigieren.

Was ist IronXL?

IronXL ist eine leistungsstarke .NET-Bibliothek, die eine Vielzahl von Funktionen im Zusammenhang mit Excel-Operationen bietet. Es bietet eine vereinfachte API, die es .NET-Entwicklern ermöglicht, Excel-Dokumente in verschiedenen Dateiformaten wie XLS, XLSX, CSV und mehr zu schreiben, zu bearbeiten und zu lesen.

Mit IronXL können Sie Excel-Dateien lesen, Daten extrahieren, Arbeitsblätter hinzufügen oder bearbeiten, Zeilen und Spalten erstellen oder ändern, Formeln anwenden, Änderungen speichern und vieles mehr. Alle diese Vorgänge können durchgeführt werden, ohne dass Microsoft Excel auf Ihrem Rechner installiert sein muss.

IronXL unterstützt Bilder, Styling, bedingte Formatierung und andere komplexe Excel-Funktionen, was es zu einer umfassenden Lösung für .NET-Excel-Operationen macht. Es ist perfekt für die Handhabung von Datenquellen und Tabellenkalkulationsanforderungen für Ihre ASP.NET MVC-Anwendungen. Die IronXL-Bibliothek wird verwendet, um Excel-Dateien in ASP.NET-Webanwendungen anzuzeigen.

Voraussetzungen

  • Grundlegendes Verständnis von ASP.NET MVC
  • Visual Studio auf Ihrem Rechner installiert
  • Installierte die IronXL-Bibliothek. Die Installationsanleitung finden Sie in der offiziellen Dokumentation des Unternehmens.

Erste Schritte

Erstellen wir zunächst ein neues ASP.NET MVC-Projekt in Visual Studio.

  1. Öffnen Sie Visual Studio.

  2. Klicken Sie auf Datei > Neu > Projekt.

  3. Im neuen Projektfenster wählen Sie die Vorlage ASP.NET-Webanwendung (.NET Framework).

    Wie man Excel in ASP.NET anzeigt, Abbildung 1: Erstellen Sie eine neue ASP.NET-Webanwendung in Visual Studio

    Erstellen Sie eine neue ASP.NET-Webanwendung in Visual Studio

  4. Benennen Sie Ihr Projekt ExcelViewer, wählen Sie den Projektstandort aus und klicken Sie auf die Schaltfläche Erstellen.

    So zeigen Sie Excel in ASP.NET an, Abbildung 2: Konfigurieren Sie Ihr Projekt

    Konfigurieren Sie Ihr Projekt

    Dieser Artikel konzentriert sich auf die Implementierung der Excel-Viewer-Funktionalität in dieser ASP.NET MVC-Anwendung.

Hinzufügen von IronXL zu Ihrem Projekt

Um Excel-Dateiformate (wie .xls, .xlsx und .csv) zu bearbeiten, bietet IronXL umfassende Funktionen zum Laden von Excel-Dokumenten, Lesen, Schreiben und sogar zum Ändern von Excel-Daten. Es unterstützt Formeln, Bilder, Formatierungen und vieles mehr.

  1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer und navigieren Sie zu NuGet-Pakete verwalten**.

  2. Im NuGet-Paket-Manager suchen Sie nach IronXL.Excel.

  3. Klicken Sie auf Installieren, um es zu Ihrem Projekt hinzuzufügen.

    So zeigen Sie Excel in ASP.NET an, Abbildung 3: Suchen Sie das IronXL-Paket und installieren Sie es im NuGet-Paket-Manager-UI

    Suchen und installieren Sie das IronXL-Paket im NuGet-Paketmanager-UI

    Sie können IronXL auch über die Paketmanager-Konsole mit dem folgenden Befehl installieren:

Install-Package IronXL.Excel

Wie man Excel in ASP.NET ansieht, Abbildung 4: Installieren Sie das IronXL-Paket aus der Paket-Manager-Konsole

Installieren Sie das IronXL-Paket über die Paket-Manager-Konsole

Nachdem IronXL nun installiert ist, können wir mit dem nächsten Schritt fortfahren.

Modelle bauen

ExcelModel

Der erste Schritt besteht darin, ein Modell für die Excel-Daten zu erstellen. Die ExcelModel-Klasse repräsentiert ein einzelnes Excel-Blatt und enthält den Blattnamen sowie die in dem Excel-Blatt vorhandenen Daten.

namespace Excel_File_Viewer_IronXL.Models
{
    public class ExcelModel
    {
        public string SheetName { get; set; }
        public List<string []> Data { get; set; }
    }
}
namespace Excel_File_Viewer_IronXL.Models
{
    public class ExcelModel
    {
        public string SheetName { get; set; }
        public List<string []> Data { get; set; }
    }
}
Namespace Excel_File_Viewer_IronXL.Models
	Public Class ExcelModel
		Public Property SheetName() As String
		Public Property Data() As List(Of String ())
	End Class
End Namespace
$vbLabelText   $csharpLabel

Das ExcelModel ist mit zwei Eigenschaften definiert, SheetName und Data. SheetName ist ein einfacher String, der den Namen jedes Excel-Blatts enthält. Data ist eine Liste von Zeichenfolgen-Arrays, um die Daten jeder Zeile im Excel-Blatt zu speichern.

ExcelViewModel

Als Nächstes erstellen wir ExcelViewModel. Dieses Modell ist ein Wrapper, der eine Datei, eine Nachricht und eine Liste von ExcelModel enthält, die Daten aus allen Blättern in der Datei repräsentiert.

using Microsoft.AspNetCore.Http;
using System.Collections.Generic;

namespace Excel_File_Viewer_IronXL.Models
{
    public class ExcelViewModel
    {
        public IFormFile File { get; set; }
        public string Message { get; set; }
        public List<ExcelModel> ExcelData { get; set; }
    }
}
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;

namespace Excel_File_Viewer_IronXL.Models
{
    public class ExcelViewModel
    {
        public IFormFile File { get; set; }
        public string Message { get; set; }
        public List<ExcelModel> ExcelData { get; set; }
    }
}
Imports Microsoft.AspNetCore.Http
Imports System.Collections.Generic

Namespace Excel_File_Viewer_IronXL.Models
	Public Class ExcelViewModel
		Public Property File() As IFormFile
		Public Property Message() As String
		Public Property ExcelData() As List(Of ExcelModel)
	End Class
End Namespace
$vbLabelText   $csharpLabel

Diese Klasse wird als Ansichtsmodell verwendet. Es verfügt über eine IFormFile-Eigenschaft für den Dateiupload, einen Message-String zur Anzeige von Nachrichten und eine List<ExcelModel>, um die abgerufenen Excel-Daten zu speichern.

5. Erstellen Sie ExcelController, um Excel-Dateien zum Datenextrahieren zu laden

Erstellen Sie dann einen neuen ExcelController. Hier geschieht die Magie! Die Excel-Dateien werden mit der WorkBook.Load-Funktion von IronXL geladen, durch die Arbeitsblätter iteriert, die Daten extrahiert und zum ExcelViewModel hinzugefügt.

using Excel_File_Viewer_IronXL.Models;
using IronXL;
using System.Collections.Generic;
using System.Web.Mvc;
using System;
using System.Linq;

public class ExcelController : Controller
{
    // GET: Excel
    public ActionResult Index()
    {
        var model = new ExcelViewModel();

        // Define the file path
        string filePath = Server.MapPath("~/App_Data/Test.xlsx"); 

    // Replace 'Test.xlsx' with your file name

        List<ExcelModel> data = new List<ExcelModel>();

        try
        {
            // Load workbook directly from a file path
            var workbook = WorkBook.Load(filePath);
            foreach (var worksheet in workbook.WorkSheets)
            {
                data.Add(new ExcelModel
                {
                    SheetName = worksheet.Name,
                    Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList()
                });
            }

            model.ExcelData = data;
            model.Message = "File processed successfully!";
        }
        catch (Exception ex)
        {
            model.Message = $"Error occurred while processing file: {ex.Message}";
        }

        return View(model);
    }
}
using Excel_File_Viewer_IronXL.Models;
using IronXL;
using System.Collections.Generic;
using System.Web.Mvc;
using System;
using System.Linq;

public class ExcelController : Controller
{
    // GET: Excel
    public ActionResult Index()
    {
        var model = new ExcelViewModel();

        // Define the file path
        string filePath = Server.MapPath("~/App_Data/Test.xlsx"); 

    // Replace 'Test.xlsx' with your file name

        List<ExcelModel> data = new List<ExcelModel>();

        try
        {
            // Load workbook directly from a file path
            var workbook = WorkBook.Load(filePath);
            foreach (var worksheet in workbook.WorkSheets)
            {
                data.Add(new ExcelModel
                {
                    SheetName = worksheet.Name,
                    Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList()
                });
            }

            model.ExcelData = data;
            model.Message = "File processed successfully!";
        }
        catch (Exception ex)
        {
            model.Message = $"Error occurred while processing file: {ex.Message}";
        }

        return View(model);
    }
}
Imports Excel_File_Viewer_IronXL.Models
Imports IronXL
Imports System.Collections.Generic
Imports System.Web.Mvc
Imports System
Imports System.Linq

Public Class ExcelController
	Inherits Controller

	' GET: Excel
	Public Function Index() As ActionResult
		Dim model = New ExcelViewModel()

		' Define the file path
		Dim filePath As String = Server.MapPath("~/App_Data/Test.xlsx")

	' Replace 'Test.xlsx' with your file name

		Dim data As New List(Of ExcelModel)()

		Try
			' Load workbook directly from a file path
			Dim workbook = WorkBook.Load(filePath)
			For Each worksheet In workbook.WorkSheets
				data.Add(New ExcelModel With {
					.SheetName = worksheet.Name,
					.Data = worksheet.Rows.Select(Function(r) r.ToArray().Select(Function(c) c.Value.ToString()).ToArray()).ToList()
				})
			Next worksheet

			model.ExcelData = data
			model.Message = "File processed successfully!"
		Catch ex As Exception
			model.Message = $"Error occurred while processing file: {ex.Message}"
		End Try

		Return View(model)
	End Function
End Class
$vbLabelText   $csharpLabel

Hier initialisieren Sie ein ExcelViewModel und laden dann das WorkBook mit IronXL, durchlaufen jedes WorkSheet, und für jedes WorkSheet erstellen wir ein ExcelModel mit dem Namen und den Daten des Arbeitsblatts. Das ExcelModel wird dann der ExcelData-Liste im ExcelViewModel hinzugefügt.

Die Daten der folgenden Excel-Datei werden geladen und angezeigt:

So zeigen Sie Excel in ASP.NET an, Abbildung 5: Die Beispiel-Excel-Datei

Die Beispieldatei für Excel

6. Erstellen Sie die Ansicht

Erstellen Sie in Ihrem Views/Excel-Verzeichnis eine neue HTML-Datei Index.cshtml, um Excel-Daten anzuzeigen. Verwenden Sie dann die nav-tabs von Bootstrap, um jedes Blatt in der Excel-Datei darzustellen. Jedes Blatt wird ein separater Tab sein und der Inhalt des Tabs wird die Daten des Blatts sein.

@model Excel_File_Viewer_IronXL.Models.ExcelViewModel

@{
    ViewBag.Title = "Index";
}

<h2>Excel File Viewer</h2>

@if (Model.ExcelData != null)
{
    <ul class="nav nav-tabs" id="myTab" role="tablist">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <li class="nav-item">
                <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)">
                    @Model.ExcelData [i].SheetName
                </a>
            </li>
        }
    </ul>
    <div class="tab-content" id="myTabContent">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i">
                <table class="table table-bordered">
                    @foreach (var row in Model.ExcelData [i].Data)
                    {
                        <tr>
                            @foreach (var cell in row)
                            {
                                <td>@cell</td>
                            }
                        </tr>
                    }
                </table>
            </div>
        }
    </div>
}
@model Excel_File_Viewer_IronXL.Models.ExcelViewModel

@{
    ViewBag.Title = "Index";
}

<h2>Excel File Viewer</h2>

@if (Model.ExcelData != null)
{
    <ul class="nav nav-tabs" id="myTab" role="tablist">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <li class="nav-item">
                <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)">
                    @Model.ExcelData [i].SheetName
                </a>
            </li>
        }
    </ul>
    <div class="tab-content" id="myTabContent">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i">
                <table class="table table-bordered">
                    @foreach (var row in Model.ExcelData [i].Data)
                    {
                        <tr>
                            @foreach (var cell in row)
                            {
                                <td>@cell</td>
                            }
                        </tr>
                    }
                </table>
            </div>
        }
    </div>
}
model ReadOnly Property () As Excel_File_Viewer_IronXL.Models.ExcelViewModel
	ViewBag.Title = "Index"
End Property

'INSTANT VB TODO TASK: The following line could not be converted:
(Of h2) Excel File Viewer</h2> [if](Model.ExcelData != Nothing)
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <ul class="nav nav-tabs" id="myTab" role="tablist"> for(int i = 0; i < Model.ExcelData.Count; i++)
	"myTab" role="tablist"> [for](Integer i = 0; i < Model.ExcelData.Count; i)
		If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <ul class="nav nav-tabs" id="myTab" role
	"nav nav-tabs" id="myTab" role
	<ul class="nav nav-tabs" id
	i += 1
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)"> @Model.ExcelData [i].SheetName </a> </li>
			"content-@i" aria-selected="@(i == 0)"> Model.ExcelData (i).SheetName </a> </li>
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected
			"tab" aria-controls="content-@i" aria-selected
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls
			"#content-@i" role="tab" aria-controls
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role
			"tab" href="#content-@i" role
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href
			"tab-@i" data-toggle="tab" href
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle
			"nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id
			"nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id
			<li class="nav-item"> <a class
		End If
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </ul> <div class="tab-content" id="myTabContent"> for(int i = 0; i < Model.ExcelData.Count; i++)
	"tab-content" id="myTabContent"> [for](Integer i = 0; i < Model.ExcelData.Count; i)
		If True Then
	</ul> <div class="tab-content" id
	i += 1
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class="table table-bordered"> foreach(var row in Model.ExcelData [i].Data)
			"tab-@i"> <table class="table table-bordered"> foreach(var row in Model.ExcelData (i).Data)
					If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class
			"tabpanel" aria-labelledby="tab-@i"> <table class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby
			"content-@i" role="tabpanel" aria-labelledby
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role
			"tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role
			<div class="tab-pane fade @(i == 0 ? "show active" : "")" id
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'						(Of tr) @foreach(var cell in row)
'							{
'								<td> @cell</td>
'							}
						</tr>
					End If
				</table> </div>
		End If
	</div>
End If
$vbLabelText   $csharpLabel

In diesem Codebeispiel erzeugt nav nav-tabs eine Liste von Tabs, von denen jeder ein Blatt aus der Excel-Datei darstellt. Der entsprechende Tab-Inhalt zeigt die Daten des jeweiligen Blattes in einem Tabellenformat an. Wenn Sie einige Änderungen vornehmen, wird eine Schaltfläche zum Durchsuchen hinzugefügt, mit der Sie die Excel-Datei manuell auswählen können.

Ausführen des Programms

Nachdem Sie alle Schritte befolgt und das Projekt korrekt eingerichtet haben, ist es an der Zeit, es zu starten. Sie sollten eine Webseite mit Registerkarten sehen, die nach den Blattnamen in Ihrer Excel-Datei benannt sind. Wenn Sie auf eine Registerkarte klicken, werden die Daten des jeweiligen Blattes in einem Tabellenformat angezeigt.

Wie man Excel in ASP.NET anzeigt, Abbildung 6: Der Excel Viewer

Der Excel-Viewer

Schlussfolgerung

Sie haben gerade einen ASP.NET Excel-Viewer mit IronXL erstellt! Diese leistungsstarke Bibliothek ermöglicht es den Benutzern, mit Excel-Dateien effizienter und übersichtlicher zu arbeiten. Mit Hilfe von IronXL war der Umgang mit Excel-Dateien in der .NET-Umgebung noch nie so einfach.

IronXL bietet eine kostenlose Testversion an, mit der Sie die umfangreiche Funktionalität ohne Vorabkosten erkunden und verstehen können. Sobald Sie es getestet haben und feststellen, dass es die perfekte Lösung für Ihre Bedürfnisse ist, beginnt die Lizenz ab $749.

Regan Pun
Software-Ingenieur
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS
Wie konvertiert man XLS in XLSX in C#
NÄCHSTES >
Wie man Daten in eine CSV-Datei in C# schreibt

Sind Sie bereit, loszulegen? Version: 2025.4 gerade veröffentlicht

Lizenzen anzeigen >