Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
Aujourd'hui, nous allons voir comment utiliser Blazor et IronXL pour convertir un fichier Excel au format CSV. À la fin de ce tutoriel, vous serez en mesure de créer une application Blazor de base qui exporte des données Excel dans différents formats, y compris CSV.
IronXL est un puissant logiciel debibliothèque Excel .NET conçu pour travailler avec des fichiers Excel enune large gamme de formatsy compris XLS, XLSX, XLSM, XLTX et CSV. Il permet aux développeurs de lire, d'écrire et de manipuler des données Excel de manière programmatique sans avoir besoin de Microsoft Office ou d'Excel Interop.
Avec IronXL, vous pouvez créer, charger et sauvegarderClasseurs Excelainsi que la lecture et l'écriture de données dans des cellules ou des plages individuelles. Il prend également en charge des fonctions avancées telles quemise en forme, formules, graphiqueset les tableaux croisés dynamiques. IronXL est compatible avec divers Frameworks .NET et peut être utilisé avec des langages populaires tels que C# et VB.NET.
Pour commencer, vous devez créer un nouveau projet Blazor Server. Ouvrez Visual Studio, créez un nouveau projet et sélectionnez le modèle "Blazor Server App". Nommez votre projet et cliquez sur "Créer"
Une fois votre projet créé, ouvrez le dossier Pages et localisez le fichier Index.razor. C'est là que les composants Blazor sont ajoutés et codés pour gérer les téléchargements et les conversions de fichiers.
Avant de commencer à écrire du code, il est nécessaire d'installer la bibliothèque IronXL. Ouvrez la console du gestionnaire de paquets dans Visual Studio et exécutez la commande suivante :
Install-Package IronXL.Excel
Cette commande installera la bibliothèque IronXL dans votre projet Blazor. Vous êtes maintenant prêt à écrire du code!
Tout d'abord, créez un composant de téléchargement de fichier basique qui permet aux utilisateurs de télécharger un fichier Excel existant. Ensuite, le composant InputFile
est ajouté à partir de l'espace de noms Microsoft.AspNetCore.Components.Forms
. Ajoutez le code suivant à votre fichier Index.razor, sous la ligne "@page"/" :
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@using Microsoft.AspNetCore.Components.Forms @using IronXL @using System.IO @using System.Threading.Tasks <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> <h3> Selected File: @originalFileName</h3> <h3 style="color:bisque"> @Is File converted: <span> @message</span></h3> </div>
Ce code met en place le composant de téléchargement de fichiers, avec un bouton et une zone de message pour afficher l'état de la conversion du fichier. L'attribut accept
du composant InputFile
spécifie les formats de fichiers acceptés.
Maintenant, écrivons le code qui gère le téléchargement et la conversion des fichiers. Une combinaison d'IronXL, de Blazor et de C# sera utilisée pour accomplir cette tâche. Vous pouvez utiliser IronXL pourconvertir un fichier CSV en fichier Excel.
Ajoutez le code suivant à votre fichier Index.razor, sous l'élément div
que vous avez ajouté plus tôt.
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
code
If True Then
private String originalFileName
private String message = ""
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private async Task OnInputFileChange(InputFileChangeEventArgs e)
' {
' var file = e.File;
' originalFileName = file.Name;
'
' try
' {
' ' Read the uploaded file into a memory stream
' var memoryStream = New MemoryStream();
' await file.OpenReadStream().CopyToAsync(memoryStream);
'
' ' Load the workbook using IronXL
' WorkBook workBook = WorkBook.Load(memoryStream);
'
' ' Save the workbook as a CSV file
' string outputPath = "sample.csv";
' workBook.SaveAsCsv(outputPath);
'
' message = "Conversion completed!";
' }
' catch (Exception ex)
' {
' message = string.Format("An error occurred: {0}", ex.Message);
' }
' }
End If
Ce code définit une méthode privée appelée OnInputFileChange
, qui sera déclenchée lorsqu'une feuille de calcul Excel est téléchargée à l'aide du composant InputFile
; Excel peut être au format XLS ou XLSX. Le code lit le fichier Excel de base téléchargé, le charge dans un fichierWorkBook
(livre de travail)(livre de travail) puis enregistre le WorkBook
sous la forme d'un fichier CSV. Le statut de la conversion est affiché dans la zone de message de la page.
Tout d'abord, regardez le code complet :
@page "/"
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<style>
body{
background-color: skyblue
}
.container {
max-width: 800px;
margin: 0 auto;
font-family: Arial, sans-serif;
}
h3 {
margin-top: 30px;
font-size: 30px;
margin-bottom: 30px;
}
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 15px 0;
cursor: pointer;
}
span{
font-size: 20px;
}
</style>
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
@page "/"
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<style>
body{
background-color: skyblue
}
.container {
max-width: 800px;
margin: 0 auto;
font-family: Arial, sans-serif;
}
h3 {
margin-top: 30px;
font-size: 30px;
margin-bottom: 30px;
}
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 15px 0;
cursor: pointer;
}
span{
font-size: 20px;
}
</style>
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
page "/" [using] Microsoft.AspNetCore.Components.Forms [using] IronXL [using] System.IO [using] ReadOnly Property body() As System.Threading.Tasks(Of style)
background-color: skyblue
End Property
.container
If True Then
max-width: 800px
margin:
0 auto
font-family: Arial, sans-serif
End If
h3
If True Then
margin-top: 30px
font-size: 30px
margin-bottom: 30px
End If
.button
If True Then
background-color: #4CAF50
border:
none
color:
white
padding:
15px 32px
text-align: center
text-decoration: none
display:
inline-block
font-size: 16px
margin:
15px 0
cursor:
pointer
End If
span
If True Then
font-size: 20px
End If
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> <h3> Selected File: originalFileName</h3> <h3 style="color:bisque"> @Is File converted: <span> message</span></h3> </div> @code
".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> (Of h3) Selected File: originalFileName</h3> <h3 style="color:bisque"> [Is] File converted: (Of span) message</span></h3> </div> code
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> <h3> Selected File: originalFileName</h3> <h3 style
"@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> (Of h3) Selected File: originalFileName</h3> <h3 style
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept
"button" OnChange="@OnInputFileChange" accept
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange
"container"> (Of h3) File Upload</h3> <InputFile class="button" OnChange
</style> <div class="container"> (Of h3) File Upload</h3> <InputFile class
private String originalFileName
private String message = ""
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private async Task OnInputFileChange(InputFileChangeEventArgs e)
' {
' var file = e.File;
' originalFileName = file.Name;
'
' try
' {
' ' Read the uploaded file into a memory stream
' var memoryStream = New MemoryStream();
' await file.OpenReadStream().CopyToAsync(memoryStream);
'
' ' Load the workbook using IronXL
' WorkBook workBook = WorkBook.Load(memoryStream);
'
' ' Save the workbook as a CSV file
' string outputPath = "sample.csv";
' workBook.SaveAsCsv(outputPath);
'
' message = "Conversion completed!";
' }
' catch (Exception ex)
' {
' message = string.Format("An error occurred: {0}", ex.Message);
' }
' }
End If
Décomposons le code plus en détail :
Lorsqu'un fichier est téléchargé, la méthode OnInputFileChange
est déclenchée et un objet InputFileChangeEventArgs
lui est transmis. Cet objet contient des informations sur le fichier téléchargé, telles que son nom et sa taille.
Stocker le nom du fichier original dans une variable appelée originalFileName
pour l'afficher sur la page.
Dans un bloc try-catch, créez un nouvel objet MemoryStream
pour lire le contenu du fichier téléchargé. L'instruction using garantit que le flux de mémoire est correctement éliminé une fois qu'il n'est plus nécessaire.
Utilisez le mot-clé await
pour copier de manière asynchrone le contenu du fichier téléchargé dans le flux de mémoire. Cela garantit que l'application reste réactive pendant la lecture du fichier.
Ensuite, leWorkBook.Load
est utilisée pour charger le contenu du flux de mémoire dans un objet WorkBook
. Cet objet représente l'ensemble du classeur Excel, y compris ses feuilles, ses cellules et ses données.
Spécifiez ensuite un nom de fichier de sortie pour le fichier CSV converti. Dans ce cas, nous utilisons le nom "sample.csv"
LesSaveAsCsv
(enregistrer sous forme de fichier)(enregistrer sous forme de fichier) de l'objet WorkBook
est alors utilisée pour enregistrer le classeur en tant que fichier CSV avec le nom de fichier de sortie spécifié.
Maintenant que l'application Blazor est terminée, il est temps de la tester! Appuyez sur F5 pour exécuter votre application dans Visual Studio. Une fois l'application lancée, un bouton de téléchargement de fichier doit apparaître sur la page.
Lancer l'application Blazor
Cliquez sur le bouton et sélectionnez un fichier Excel à télécharger. Les formats de fichiers acceptés sont listés dans l'attribut accept du composant InputFile
.
Sélectionner un fichier Excel
Après avoir sélectionné un fichier, l'application lira le fichier, le convertira au format CSV à l'aide d'IronXL et enregistrera le fichier converti sous le nom de fichier de sortie spécifié. Vous devriez voir un message indiquant l'état de la conversion, ainsi que le nom du fichier d'origine.
Statut de conversion
Félicitations! Vous avez réussi à construire une application Blazor qui peut exporter des fichiers Excel au format CSV en utilisant IronXL. La capture d'écran suivante montre la sortie du programme ci-dessus.
Le fichier Excel de sortie
Ce tutoriel a démontré comment construire une application Blazor qui peut exporter des fichiers Excel au format CSV en utilisant IronXL. Nous avons montré comment créer un composant de téléchargement de fichiers, gérer les téléchargements de fichiers et convertir des fichiers Excel au format CSV en utilisant les puissantes fonctionnalités d'IronXL.
En incorporant IronXL dans vos applications Blazor, vous pouvez facilement traiter une variété de tâches liées à Excel, telles que l'importation, la manipulation et l'exportation de données. Cela ouvre un large éventail de possibilités pour vos projets et vous aide à offrir une expérience plus riche à vos utilisateurs. Vous pouvezconvertir CSV en Excel dans Blazor en utilisant la bibliothèque IronXL.
IronXL offre uneessai gratuitvous pouvez ainsi tester ses caractéristiques et ses capacités avant de vous engager dans un achat. Après la période d'essai, les licences pour IronXL commencent à $749.
9 produits de l'API .NET pour vos documents de bureau