IRONXL VERWENDEN

Wie man Excel in ASP.NET anzeigt

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 Fülle von Funktionen für Excel-Operationen bietet. Es bietet eine vereinfachte API, die es .NET-Entwicklern ermöglicht, zu schreiben, zu manipulieren und excel-Dokumente lesen in verschiedenen Dateiformaten wie XLS, XLSX, CSV und anderen.

Mit IronXL können Sie Excel-Dateien lesen, daten extrahierenarbeitsblätter hinzufügen oder bearbeiten, zeilen und Spalten erstellen oder ändern, beantragen formeln, Ä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 und Styling, bedingte Formatierungund 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
  • Installiert 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. Wählen Sie im neuen Projektfenster ASP.NET Web Application (.NET-Framework) Vorlage.

    Wie man Excel in ASP.NET anzeigt, Abbildung 1: Erstellen einer neuen ASP.NET-Webanwendung in Visual Studio

     **Erstellen einer neuen ASP.NET-Webanwendung in Visual Studio**
  4. Nennen Sie Ihr Projekt ExcelViewer, wählen Sie den Speicherort des Projekts und klicken Sie auf die Schaltfläche Erstellen.

    Wie man Excel in ASP.NET anzeigt, 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

So verarbeiten Sie Excel-Dateiformate (wie .xls, .xlsx, und .csv)ironXL bietet umfassende Funktionen zum Laden von Excel-Dokumenten, zum 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 Solution Explorer und navigieren Sie zu Manage NuGet Packages**.

  2. Suchen Sie im NuGet Package Manager nach IronXL.Excel.

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

    How to View Excel in ASP.NET, Abbildung 3: Suchen und installieren Sie das IronXL-Paket in der NuGet Package Manager UI

     **Das IronXL-Paket in der NuGet Package Manager UI suchen und installieren**

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

Install-Package IronXL.Excel

Wie man Excel in ASP.NET anzeigt, Abbildung 4: Installieren Sie das IronXL-Paket über die Paketmanager-Konsole

Installieren Sie das IronXL-Paket über die Paketmanager-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 Klasse "ExcelModel" stellt ein einzelnes Excel-Blatt dar und enthält den Blattnamen und die im 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
VB   C#

Das "ExcelModel" ist mit zwei Eigenschaften definiert, "SheetName" und "Data". blattname" ist eine einfache Zeichenfolge, die den Namen jedes Excel-Blatts enthält. daten" ist eine Liste von String-Arrays zum Speichern der Daten jeder Zeile im Excel-Blatt.

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 darstellt.

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
VB   C#

Diese Klasse wird als Ansichtsmodell verwendet. Sie hat eine(n) iFormFile"-Eigenschaft für das Hochladen von Dateien, eine "Message"-String für die Anzeige von Meldungen und eine "List` zum Speichern der abgerufenen Excel-Daten.

5. Erstellen von "ExcelController" zum Laden von Excel-Dateien für die Datenextraktion

Erstellen Sie dann einen neuen "ExcelController". Hier geschieht die Magie! Die Excel-Dateien werden mit der IronXL-Funktion arbeitsbuch.Laden funktion, durchlaufen Sie die Arbeitsblätter in einer Schleife, extrahieren Sie die Daten und fügen Sie sie dem "ExcelViewModel" hinzu.

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
VB   C#

Hier initialisieren Sie eine(n) excelViewModel" und laden Sie dann die arbeitsbuch mit IronXL eine Schleife durch jede arbeitsblattund für jedes WorkSheet erstellen wir eine(n) eXCELModel" mit dem Namen und den Daten des Arbeitsblatts. Das ExcelModel wird dann der Liste ExcelData im ExcelViewModel hinzugefügt.

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

How to View Excel in ASP.NET, Abbildung 5: Die Excel-Beispieldatei

Die Excel-Beispieldatei

6. Erstellen Sie die Ansicht

Erstellen Sie in Ihrem Verzeichnis Views/Excel eine neue HTML-Datei Index.cshtml, um Excel-Daten anzuzeigen. Verwenden Sie dann Bootstraps "nav-tabs", um jedes Blatt in der Excel-Datei darzustellen. Jedes Blatt wird eine separate Registerkarte sein, und der Inhalt der Registerkarte wird die Daten des Blattes 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
VB   C#

In diesem Codebeispiel erzeugt nav nav-tabs eine Liste von Registerkarten, die jeweils ein Blatt aus der Excel-Datei darstellen. Der Inhalt der entsprechenden Registerkarte 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 soeben mit IronXL einen ASP.NET-Excel-Viewer 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 kostenloser Testso können Sie die umfangreichen Funktionen ohne Vorabkosten erkunden und verstehen. Sobald Sie es getestet haben und es die perfekte Lösung für Ihre Bedürfnisse ist, beginnt die Lizenz bei $749.

< 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: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 1,068,832 Lizenzen anzeigen >