UTILISATION D'IRONXL

Comment afficher Excel en ASP.NET

Mise à jour mars 31, 2024
Partager:

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.

Qu'est-ce qu'IronXL ?

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.

Conditions préalables

  • Compréhension de base de ASP.NET MVC
  • Visual Studio installé sur votre machine
  • Installé le IronXL bibliothèque. Vous pouvez trouver le guide d'installation sur leur documentation officielle.

Pour commencer

Tout d'abord, créons un nouveau projet ASP.NET MVC dans Visual Studio.

  1. Ouvrez Visual Studio.

  2. Cliquez sur Fichier > Nouveau > Projet.

  3. Dans la fenêtre du nouveau projet, choisissez ASP.NET Web Application (framework .NET) template.

    Comment afficher Excel en ASP.NET, Figure 1 : Créer une nouvelle application Web ASP.NET dans Visual Studio

     **Créer une nouvelle application Web ASP.NET dans Visual Studio**
  4. Nommez votre projet ExcelViewer, sélectionnez l'emplacement du projet et cliquez sur le bouton Créer.

    Comment afficher Excel en ASP.NET, Figure 2 : Configurez votre projet

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

Ajouter IronXL à votre projet

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.

  1. Faites un clic droit sur votre projet dans Solution Explorer, et naviguez jusqu'à Manage NuGet Packages**.

  2. Dans le NuGet Package Manager, recherchez IronXL.Excel.

  3. Cliquez sur Installer pour l'ajouter à votre projet.

    Comment afficher Excel en ASP.NET, Figure 3 : Rechercher et installer le package IronXL dans l'interface NuGet Package Manager

     **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

Comment afficher Excel en ASP.NET, Figure 4 : Installer le paquet IronXL à partir de la console du gestionnaire de paquets

Installer le paquet IronXL à partir de la console du gestionnaire de paquets

Maintenant qu'IronXL est installé, passons à l'étape suivante.

Modèles de construction

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

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

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.

5. Créer ExcelController pour charger des fichiers Excel pour l'extraction de données

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

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 travailet 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 :

Comment afficher Excel en ASP.NET, Figure 5 : L'exemple de fichier Excel

L'exemple de fichier Excel

6. Créer la vue

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

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.

Exécution du programme

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.

Comment afficher Excel en ASP.NET, Figure 6 : La visionneuse Excel

La visionneuse Excel

Conclusion

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.

< PRÉCÉDENT
Comment convertir un fichier XLS en fichier XLSX en C#
SUIVANT >
Comment écrire des données dans un fichier CSV en C#