using IronXL;
using System;
using System.Linq;
// Supported for XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];
// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select a cell and return the converted value
int cellValue = workSheet["A2"].IntValue;
// Read from ranges of cells elegantly.
foreach (var cell in workSheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Calculate aggregate values such as Min, Max and Sum
decimal sum = workSheet["A2:A10"].Sum();
// Linq compatible
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
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 etlire 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 candidatureformulesenregistrer 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é leIronXL 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.
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.
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.
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.
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
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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 fonctionWorkBook.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
$vbLabelText $csharpLabel
Il s'agit ici d'initialiser un(n) ExcelViewModel et charge ensuite le fichierWorkBook (livre de travail) à l'aide d'IronXL, parcourir en boucle chaqueFeuille 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 :
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 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
$vbLabelText $csharpLabel
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.
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 uneessai 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.
Regan est diplômé de l'université de Reading, où il a obtenu une licence en ingénierie électronique. Avant de rejoindre Iron Software, il s'était concentré sur une seule tâche. Ce qu'il apprécie le plus chez Iron Software, c'est la diversité des tâches qu'il peut accomplir, qu'il s'agisse d'apporter une valeur ajoutée aux ventes, à l'assistance technique, au développement de produits ou à la commercialisation. Il aime comprendre comment les développeurs utilisent la bibliothèque d'Iron Software et utiliser ces connaissances pour améliorer continuellement la documentation et développer les produits.
< 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#
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier