Wie man Excel in ASP.NET anzeigt
Dieses umfassende Tutorial demonstriert, wie man einen Excel-Viewer mit ASP.NET MVC und IronXL erstellt. Dieser Viewer ermöglicht es Benutzern, Excel-Dateien direkt von ihrer Webseite aus anzuzeigen, zu bearbeiten und zu navigieren.
Was ist IronXL?
IronXL ist eine leistungsstarke .NET-Bibliothek, die eine Vielzahl von Funktionen in Bezug auf 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 manipulieren 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. All diese Operationen können durchgeführt werden, ohne dass Microsoft Excel auf Ihrem Computer installiert sein muss.
IronXL unterstützt Bilder, Formatierung, bedingte Formatierung und andere komplexe Excel-Funktionen und ist damit eine umfassende Lösung for .NET-Excel-Operationen. Es ist perfekt für die Handhabung von Datenquellen- und Tabellenkalkulationsanforderungen Ihrer ASP.NET MVC-Anwendungen geeignet. 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
- Die IronXL-Bibliothek installiert. Die Installationsanleitung finden Sie in ihrer offiziellen Dokumentation.
Einstieg
Erstellen wir zuerst ein neues ASP.NET MVC-Projekt in Visual Studio.
- Öffnen Sie Visual Studio.
- Klicken Sie auf Datei > Neu > Projekt.
-
Wählen Sie im neuen Projektfenster die Vorlage ASP.NET-Webanwendung (.NET Framework) aus.
Erstellen einer neuen ASP.NET-Webanwendung in Visual Studio -
Benennen Sie Ihr Projekt ExcelViewer, wählen Sie den Projektstandort und klicken Sie auf die Schaltfläche Erstellen.
Konfigurieren Ihres Projekts
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 handhaben, bietet IronXL umfassende Funktionen zum Laden von Excel-Dokumenten, Lesen, Schreiben und sogar zum Ändern von Excel-Daten. Es unterstützt Formeln, Bilder, Formatierung und vieles mehr.
- Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer und gehen Sie zu NuGet-Pakete verwalten.
- Suchen Sie im NuGet-Paket-Manager nach IronXL.Excel.
-
Klicken Sie auf Installieren, um es Ihrem Projekt hinzuzufügen.
Suchen und installieren Sie das IronXL-Paket im NuGet-Paket-Manager-UI
Sie können IronXL auch mit dem folgenden Befehl über die Paket-Manager-Konsole installieren:
Install-Package IronXL.Excel
Installieren Sie das IronXL-Paket über die Paket-Manager-Konsole
Jetzt, da IronXL installiert ist, gehen wir zum nächsten Schritt über.
Modelle erstellen
ExcelModel
Der erste Schritt ist das Erstellen eines Modells für die Excel-Daten. Die Klasse ExcelModel repräsentiert ein einzelnes Excel-Arbeitsblatt und enthält den Namen des Arbeitsblatts sowie die im Excel-Arbeitsblatt enthaltenen Daten.
namespace Excel_File_Viewer_IronXL.Models
{
public class ExcelModel
{
public string SheetName { get; set; }
// Data is a list of string arrays, each array represents a row in the sheet.
public List<string[]> Data { get; set; }
}
}
namespace Excel_File_Viewer_IronXL.Models
{
public class ExcelModel
{
public string SheetName { get; set; }
// Data is a list of string arrays, each array represents a row in the sheet.
public List<string[]> Data { get; set; }
}
}
Namespace Excel_File_Viewer_IronXL.Models
Public Class ExcelModel
Public Property SheetName() As String
' Data is a list of string arrays, each array represents a row in the sheet.
Public Property Data() As List(Of String())
End Class
End Namespace
Der Code ExcelModel ist mit zwei Eigenschaften definiert, SheetName und Data. SheetName ist eine einfache Zeichenkette, die den Namen jedes Excel-Tabellenblatts enthält. Data ist eine Liste von String-Arrays, um die Daten jeder Zeile im Excel-Arbeitsblatt 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 Tabellenblättern 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; } // For uploading Excel file
public string Message { get; set; } // Message for storing success/error messages
public List<ExcelModel> ExcelData { get; set; } // List to store data from all sheets
}
}
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
namespace Excel_File_Viewer_IronXL.Models
{
public class ExcelViewModel
{
public IFormFile File { get; set; } // For uploading Excel file
public string Message { get; set; } // Message for storing success/error messages
public List<ExcelModel> ExcelData { get; set; } // List to store data from all sheets
}
}
Imports Microsoft.AspNetCore.Http
Imports System.Collections.Generic
Namespace Excel_File_Viewer_IronXL.Models
Public Class ExcelViewModel
Public Property File() As IFormFile ' - For uploading Excel file
Public Property Message() As String ' - Message for storing success/error messages
Public Property ExcelData() As List(Of ExcelModel) ' - List to store data from all sheets
End Class
End Namespace
Diese Klasse wird als View-Model verwendet. Es verfügt über eine IFormFile Eigenschaft zum Hochladen von Dateien, eine Message Zeichenkette zur Anzeige von Meldungen und eine List<ExcelModel> zum Speichern der abgerufenen Excel-Daten.
5. Erstellen Sie ExcelController, um Excel-Dateien zur Datenextraktion zu laden.
Erstellen Sie dann ein neues ExcelController. Hier geschieht die Magie! Die Excel-Dateien werden mit Hilfe der IronXL-Funktion WorkBook.Load geladen, durchlaufen die Arbeitsblätter, extrahieren die Daten und fügen sie der Funktion 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 for the Excel file
string filePath = Server.MapPath("~/App_Data/Test.xlsx");
// List to store data for each sheet
List<ExcelModel> data = new List<ExcelModel>();
try
{
// Load workbook directly from a file path
var workbook = WorkBook.Load(filePath);
// Loop through all worksheets in the workbook
foreach (var worksheet in workbook.WorkSheets)
{
// Add each worksheet's name and data to the data list
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 for the Excel file
string filePath = Server.MapPath("~/App_Data/Test.xlsx");
// List to store data for each sheet
List<ExcelModel> data = new List<ExcelModel>();
try
{
// Load workbook directly from a file path
var workbook = WorkBook.Load(filePath);
// Loop through all worksheets in the workbook
foreach (var worksheet in workbook.WorkSheets)
{
// Add each worksheet's name and data to the data list
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 for the Excel file
Dim filePath As String = Server.MapPath("~/App_Data/Test.xlsx")
' List to store data for each sheet
Dim data As New List(Of ExcelModel)()
Try
' Load workbook directly from a file path
Dim workbook = WorkBook.Load(filePath)
' Loop through all worksheets in the workbook
For Each worksheet In workbook.WorkSheets
' Add each worksheet's name and data to the data list
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
Hier wird ein ExcelViewModel initialisiert und anschließend das WorkBook mit IronXL geladen. Danach wird jedes WorkSheet durchlaufen und für jedes WorkSheet wird ein ExcelModel mit dem Namen und den Daten des Arbeitsblatts erstellt. Der Code ExcelModel wird dann der Liste ExcelData in der Liste ExcelViewModel hinzugefügt.
Die Daten der folgenden Excel-Datei werden geladen und angezeigt:
Die Mustertabelle
6. Erstellen Sie die Ansicht
Erstellen Sie im Verzeichnis Views/Excel eine neue HTML-Datei Index.cshtml, um Excel-Daten anzuzeigen. Verwenden Sie anschließend Bootstraps nav-tabs, um jedes Tabellenblatt in der Excel-Datei darzustellen. Jedes Tabellenblatt wird als separate Registerkarte angezeigt, und der Inhalt der Registerkarte entspricht den Daten des jeweiligen Tabellenblatts.
@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
In diesem Codebeispiel erzeugt nav nav-tabs eine Liste von Registerkarten, die jeweils ein Tabellenblatt der Excel-Datei repräsentieren. Der Inhalt der entsprechenden Registerkarte zeigt die Daten des jeweiligen Tabellenblatts in Tabellenform an. Durch einige Änderungen wird eine Durchsuchen-Schaltfläche hinzugefügt, um die Excel-Datei manuell auszuwählen.
Das Programm ausführen
Nachdem Sie alle Schritte befolgt und das Projekt korrekt eingerichtet haben, ist es an der Zeit, es auszuführen. Sie sollten eine Webseite mit Tabs sehen, die nach den Blattnamen in Ihrer Excel-Datei benannt sind. Wenn Sie auf einen Tab klicken, werden die entsprechenden Blattdaten in einem Tabellenformat angezeigt.
Der Excel-Viewer
Abschluss
Sie haben gerade einen ASP.NET-Excel-Viewer mit IronXL erstellt! Diese leistungsstarke Bibliothek ermöglicht es Benutzern, effizienter und übersichtlicher mit Excel-Dateien zu arbeiten. Mit der Hilfe von IronXL war der Umgang mit Excel-Dateien in der .NET-Umgebung noch nie einfacher.
IronXL bietet eine kostenlose Testversion , mit der Sie die umfangreichen Funktionen unverbindlich erkunden können. Sobald Sie IronXL getestet und für Ihre Bedürfnisse als optimale Lösung befunden haben, beginnt die Lizenz ab $799.
Häufig gestellte Fragen
Wie kann ich einen Excel Viewer mit ASP.NET MVC erstellen?
Sie können einen Excel Viewer mit ASP.NET MVC erstellen, indem Sie ein neues Projekt in Visual Studio einrichten und die IronXL-Bibliothek über den NuGet-Paketmanager hinzufügen. Dadurch können Sie Excel-Dateien direkt in Ihrer Webanwendung laden, anzeigen und bearbeiten.
Was sind die Schritte, um ein ASP.NET MVC Projekt zum Umgang mit Excel-Dateien einzurichten?
Um ein ASP.NET MVC Projekt zum Umgang mit Excel-Dateien einzurichten, öffnen Sie Visual Studio, erstellen Sie ein neues ASP.NET-Webanwendungsprojekt und installieren Sie die IronXL-Bibliothek über NuGet. Erstellen Sie anschließend Modelle wie ExcelModel und ExcelViewModel, um Excel-Daten zu verwalten, und verwenden Sie den ExcelController, um Excel-Dateien zu laden und zu verarbeiten.
Kann ich mehrere Excel-Blätter in einer ASP.NET Anwendung anzeigen?
Ja, Sie können mehrere Excel-Blätter in einer ASP.NET-Anwendung anzeigen, indem Sie IronXL verwenden, um die Excel-Datei zu laden, und dann Bootstrap's nav-tabs verwenden, um separate Registerkarten für jedes Blatt zu erstellen und die Daten in einem Tabellenformat anzuzeigen.
Wie lade und verarbeite ich eine Excel-Datei in ASP.NET mit einer .NET-Bibliothek?
In ASP.NET können Sie eine Excel-Datei mit der WorkBook.Load-Methode von IronXL laden und verarbeiten. Diese Methode ermöglicht es Ihnen, die Excel-Datei zu lesen, durch ihre Arbeitsblätter zu iterieren und die Daten zur Anzeige oder weiteren Bearbeitung zu extrahieren.
Was sind die Vorteile der Verwendung von IronXL für Excel-Operationen in .NET?
IronXL bietet mehrere Vorteile für Excel-Operationen in .NET, einschließlich Unterstützung für verschiedene Excel-Dateiformate, die Fähigkeit zur Manipulation komplexer Excel-Features wie Bilder und bedingtem Formatieren, und den Vorteil, dass keine Installation von Microsoft Excel auf dem Server erforderlich ist.
Wie kann ich häufige Probleme beim Erstellen eines ASP.NET Excel Viewers beheben?
Häufige Probleme beim Erstellen eines ASP.NET Excel Viewers können behoben werden, indem sichergestellt wird, dass die IronXL-Bibliothek korrekt über NuGet installiert ist, alle notwendigen Modelle und Controller richtig implementiert sind und die Excel-Dateien in einem unterstützten Format vorliegen.
Ist es möglich, Excel-Dateien direkt von einer ASP.NET-Webseite aus zu bearbeiten?
Ja, es ist möglich, Excel-Dateien direkt von einer ASP.NET-Webseite aus mit IronXL zu bearbeiten. Die Bibliothek ermöglicht es Ihnen, Excel-Dateien in Ihre Webanwendung zu laden, Daten zu ändern und nahtlos Änderungen zurück in die Datei zu speichern.
Unterstützt IronXL sowohl das Lesen als auch das Schreiben von Excel-Dateien?
Ja, IronXL unterstützt sowohl das Lesen als auch das Schreiben von Excel-Dateien. Sie können es verwenden, um Daten aus vorhandenen Excel-Dokumenten zu lesen und neue Daten oder Änderungen in Excel-Dateien in mehreren Formaten zu schreiben, einschließlich XLS, XLSX und CSV.
Welche Modelle sollten erstellt werden, um Excel-Daten in einer ASP.NET MVC-Anwendung zu verwalten?
In einer ASP.NET MVC-Anwendung sollten Sie Modelle wie ExcelModel erstellen, um einzelne Excel-Blätter darzustellen, und ExcelViewModel, um eine Sammlung von Blättern zu verwalten und Dateiupload und Messaging zu bearbeiten.
Wie kann ich die Funktionen von IronXL vor dem Kauf testen?
Sie können die Funktionen von IronXL testen, indem Sie die kostenlose Testversion auf ihrer Website herunterladen. Diese Testversion erlaubt es Ihnen, die Fähigkeiten der Bibliothek im Umgang mit Excel-Dateien innerhalb Ihrer .NET-Anwendungen ohne anfängliche Kosten zu erkunden.




