Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
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.
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 undexcel-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, beantragenformeln, Ä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.
Erstellen wir zunächst 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 ASP.NET Web Application(.NET-Framework) Vorlage.
Erstellen einer neuen ASP.NET-Webanwendung in Visual Studio
Nennen Sie Ihr Projekt ExcelViewer, wählen Sie den Speicherort des Projekts und klicken Sie auf die Schaltfläche Erstellen.
Konfigurieren Sie Ihr Projekt
Dieser Artikel konzentriert sich auf die Implementierung der Excel-Viewer-Funktionalität in dieser ASP.NET MVC-Anwendung.
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.
Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Solution Explorer und navigieren Sie zu Manage NuGet Packages**.
Suchen Sie im NuGet Package Manager nach IronXL.Excel.
Klicken Sie auf Installieren, um es zu Ihrem Projekt hinzuzufügen.
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
Installieren Sie das IronXL-Paket über die Paketmanager-Konsole
Nachdem IronXL nun installiert ist, können wir mit dem nächsten Schritt fortfahren.
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
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.
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
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
Erstellen Sie dann einen neuen "ExcelController". Hier geschieht die Magie! Die Excel-Dateien werden mit der IronXL-Funktionarbeitsbuch.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
Hier initialisieren Sie eine(n) excelViewModel" und laden Sie dann diearbeitsbuch mit IronXL eine Schleife durch jedearbeitsblattund 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:
Die Excel-Beispieldatei
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
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.
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.
Der Excel-Viewer
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 einekostenloser 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.
9 .NET API-Produkte für Ihre Bürodokumente