UTILISATION D'IRONXL

Comment exporter vers CSV dans Blazor

Mise à jour mars 31, 2024
Partager:

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.

Introduction à IronXL

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.

Etapes pour convertir un fichier Excel en CSV

Mise en place du projet Blazor

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.

Installation d'IronXL

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!

Création du composant de téléchargement de fichiers

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

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.

Écriture du code de conversion des fichiers

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

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.

Décomposition du code

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

Décomposons le code plus en détail :

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

  2. Stocker le nom du fichier original dans une variable appelée originalFileName pour l'afficher sur la page.

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

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

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

  6. Spécifiez ensuite un nom de fichier de sortie pour le fichier CSV converti. Dans ce cas, nous utilisons le nom "sample.csv"

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

  8. Si la conversion est réussie, un message s'affiche pour indiquer que la conversion est terminée. En cas d'erreur, l'exception est détectée et un message d'erreur est affiché.

Test de l'application

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.

Comment exporter vers CSV dans Blazor, Figure 1 : Lancer l'application Blazor

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.

Comment exporter vers CSV dans Blazor, Figure 2 : Sélectionner un fichier Excel

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.

Comment exporter vers CSV dans Blazor, Figure 3 : Etat de la conversion

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.

Comment exporter vers CSV dans Blazor, Figure 4 : Le fichier Excel de sortie

Le fichier Excel de sortie

Conclusion

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.

< PRÉCÉDENT
Comment convertir Excel en Datagridview en C#
SUIVANT >
Comment convertir Excel en tableau de données en C#