Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
Ce tutoriel complet démontrera comment construire une visionneuse Excel en utilisant ASP.NET MVC et IronXL for .NET. Cette visionneuse permettra aux utilisateurs d'afficher, d'éditer et de naviguer dans des fichiers Excel directement à partir de leur page web.
IronXL est une puissante bibliothèque .NET qui offre une pléthore de fonctionnalités liées aux opérations Excel. Il offre une API simplifiée qui permet aux développeurs .NET d'écrire, manipuler et lire des documents Excel dans différents formats de fichiers, notamment XLS, XLSX, CSV, etc.
Avec IronXL, vous pouvez lire des fichiers Excel, extraire des donnéesajouter ou modifier des feuilles de travail, créer ou modifier des lignes et des colonnes, poser sa candidature formulesenregistrer les modifications, et bien d'autres choses encore. Toutes ces opérations peuvent être effectuées sans qu'il soit nécessaire d'installer Microsoft Excel sur votre machine.
IronXL prend en charge les images, le stylisme, formatage conditionnelet d'autres fonctions Excel complexes, ce qui en fait une solution complète pour les opérations Excel .NET. Il est parfait pour gérer les exigences en matière de sources de données et de feuilles de calcul pour vos applications ASP.NET MVC. La bibliothèque IronXL sera utilisée pour visualiser les fichiers Excel dans les applications Web ASP.NET.
Tout d'abord, créons un nouveau projet ASP.NET MVC dans Visual Studio.
Ouvrez Visual Studio.
Cliquez sur Fichier > Nouveau > Projet.
Dans la fenêtre du nouveau projet, choisissez ASP.NET Web Application (framework .NET) template.
**Créer une nouvelle application Web ASP.NET dans Visual Studio**
Nommez votre projet ExcelViewer, sélectionnez l'emplacement du projet et cliquez sur le bouton Créer.
**Configurer votre projet**
Cet article se concentre sur la mise en œuvre de la fonctionnalité de visualisation d'Excel dans cette application ASP.NET MVC.
Traiter les formats de fichiers Excel (comme .xls, .xlsx et .csv)ironXL offre des fonctions complètes pour charger des documents Excel, lire, écrire et même modifier des données Excel. Il prend en charge les formules, les images, le formatage et bien plus encore.
Faites un clic droit sur votre projet dans Solution Explorer, et naviguez jusqu'à Manage NuGet Packages**.
Dans le NuGet Package Manager, recherchez IronXL.Excel.
Cliquez sur Installer pour l'ajouter à votre projet.
**Recherche et installation du paquetage IronXL dans l'interface utilisateur du gestionnaire de paquets NuGet**
Vous pouvez également installer IronXL à l'aide de la console du gestionnaire de paquets en utilisant la commande suivante :
Install-Package IronXL.Excel
Installer le paquet IronXL à partir de la console du gestionnaire de paquets
Maintenant qu'IronXL est installé, passons à l'étape suivante.
ExcelModel
La première étape consiste à créer un modèle pour les données Excel. La classe ExcelModel
représentera une seule feuille Excel et contiendra le nom de la feuille et les données présentes dans la feuille Excel.
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
Le modèle ExcelModel
est défini avec deux propriétés, SheetName
et Data
. SheetName
est une simple chaîne de caractères qui contient le nom de chaque feuille Excel. Data
est une liste de tableaux de chaînes pour stocker les données de chaque ligne de la feuille Excel.
ExcelViewModel
Ensuite, créons ExcelViewModel
. Ce modèle est une enveloppe qui contient un fichier, un message et une liste de ExcelModel
qui représente les données de toutes les feuilles du fichier.
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
Cette classe sera utilisée comme modèle de vue. Il dispose d'un(n) IFormFile
pour le téléchargement de fichiers, une chaîne Message
pour l'affichage des messages, et une propriété List<ExcelModel>
pour stocker les données Excel récupérées.
ExcelController
pour charger des fichiers Excel pour l'extraction de donnéesEnsuite, créez un nouveau ExcelController
. C'est ici que la magie opère! Les fichiers Excel sont chargés à l'aide de la fonction WorkBook.Load
pour parcourir en boucle les feuilles de calcul, extraire les données et les ajouter au modèle ExcelViewModel
.
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
Il s'agit ici d'initialiser un(n) ExcelViewModel
et charge ensuite le fichier WorkBook
(livre de travail) à l'aide d'IronXL, parcourir en boucle chaque Feuille de travail
et pour chaque Feuille de travail
, nous créons un fichier(n) ExcelModel
avec le nom et les données de la feuille de calcul. Le modèle ExcelModel
est alors ajouté à la liste ExcelData
du modèle ExcelViewModel
.
Les données du fichier Excel suivant vont être chargées et affichées :
L'exemple de fichier Excel
Dans votre répertoire Views/Excel, créez un nouveau fichier HTML Index.cshtml
pour afficher les données Excel. Utilisez ensuite la fonction nav-tabs
de Bootstrap pour représenter chaque feuille du fichier Excel. Chaque feuille sera un onglet séparé, et le contenu de l'onglet sera les données de la feuille.
@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
Dans cet exemple de code, nav nav-tabs
génère une liste d'onglets, chacun représentant une feuille du fichier Excel. Le contenu de l'onglet correspondant affichera les données de la feuille en question sous forme de tableau. En apportant quelques modifications, un bouton "Parcourir" est ajouté pour sélectionner manuellement le fichier Excel.
Après avoir suivi toutes les étapes et configuré le projet correctement, il est temps de l'exécuter. Vous devriez voir une page web avec des onglets nommés d'après les noms des feuilles de votre fichier Excel. En cliquant sur un onglet, vous afficherez les données de la feuille correspondante sous forme de tableau.
La visionneuse Excel
Vous venez de créer une visionneuse ASP.NET pour Excel à l'aide d'IronXL! Cette puissante bibliothèque permet aux utilisateurs de travailler avec des fichiers Excel de manière plus efficace et plus facile à gérer. Avec l'aide d'IronXL, il n'a jamais été aussi facile de traiter des fichiers Excel dans l'environnement .NET.
IronXL fournit une essai gratuitvous pouvez ainsi explorer et comprendre ses vastes fonctionnalités sans aucun coût initial. Une fois que vous l'avez testé et trouvé la solution parfaite pour vos besoins, la licence commence à partir de $749.
9 produits de l'API .NET pour vos documents de bureau