Fermer

novembre 28, 2022

L’importation arrive dans la bibliothèque RadSpreadStreamProcessing R3 20223 minutes de lecture


Découvrez comment utiliser la nouvelle fonctionnalité d’importation de la bibliothèque RadSpreadStreamProcessing.

Pendant longtemps, nous avons pris en charge la création de fichiers avec la bibliothèque RadSpreadStreamProcessing. Cette bibliothèque est particulièrement utilisée pour les fichiers volumineux. L’essentiel est qu’il n’est pas nécessaire de charger toutes les données dans la mémoire de l’application pour créer le document. Cela réduit considérablement l’utilisation de la mémoire de l’application et permet de gérer de grandes quantités de données. Ceci est réalisé en écrivant directement les données dans le fichier.

Dans le Version R3 2022, nous avons également ajouté la possibilité de lire des fichiers XLSX ou CSV avec cette bibliothèque. Cette fonctionnalité utilise la même approche et lit les cellules et les propriétés consécutivement (telles qu’elles apparaissent dans la structure du document). De cette façon, une seule cellule est stockée à la fois dans l’application, ce qui réduit l’empreinte mémoire.

Outre les valeurs de cellule, vous pouvez lire le format et les styles de cellule. Vous pouvez également lire les propriétés Ligne/Colonne. Vérifiez Importer section de la documentation en ligne RadSpreadStreamProcessing.

Un exemple

Dans l’exemple ci-dessous, nous utiliserons les deux fonctionnalités (lecture et écriture). Dans ce scénario, nous aurons un fichier XLSX très volumineux et nous ne souhaitons utiliser qu’une partie des données qu’il contient. Nous obtiendrons les données en fonction de certaines propriétés de la cellule. Pendant que nous lisons les données, nous les écrirons simultanément dans un fichier CSV. Le fichier résultant ne contiendra que les données filtrées.

using Telerik.Documents.SpreadsheetStreaming;
string source = @"..\..\..\source.xlsx";
string result = @"..\..\..\result.csv";

using (FileStream sourceFile = File.OpenRead(source))
{
    using (FileStream resultFile = File.OpenWrite(result))
    {
        using (IWorkbookImporter workBookImporter = SpreadImporter.CreateWorkbookImporter(SpreadDocumentFormat.Xlsx, sourceFile))
        {
            using (IWorkbookExporter workbookExporter = SpreadExporter.CreateWorkbookExporter(SpreadDocumentFormat.Csv, resultFile))
            {
                using (IWorksheetImporter worksheetImporter = workBookImporter.WorksheetImporters.First())
                {
                    using (IWorksheetExporter worksheetExporter = workbookExporter.CreateWorksheetExporter("My sheet"))
                    {
                        foreach (IRowImporter rowImporter in worksheetImporter.Rows)
                        {
                            // Skip the header rows  
                            List<string> values = new List<string>();

                            foreach (ICellImporter cellImporter in rowImporter.Cells)
                            {
                                if (cellImporter.RowIndex < 3)
                                {
                                    continue;
                                }

                                string value = cellImporter.Value;

                                if (cellImporter.ColumnIndex <= 6 && !string.IsNullOrEmpty(value))
                                {
                                    values.Add(value);
                                }

                                // Status column which is a color
                                else if (cellImporter.ColumnIndex == 7)
                                {
                                    var fill = cellImporter.Format.Fill as SpreadPatternFill;
                                    SpreadColor color = fill.BackgroundColor.LocalValue;

                                    // Export the rows with Green status only
                                    if (color.R == 142 && color.G == 188 && color.B == 0)
                                    {
                                        using (IRowExporter rowExporter = worksheetExporter.CreateRowExporter())
                                        {
                                            foreach (var item in values)
                                            {
                                                using (ICellExporter cellExporter = rowExporter.CreateCellExporter())
                                                {
                                                    cellExporter.SetValue(item);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

J’espère que cet exemple est utile. La conversion du scénario opposé (CSV en XLSX) est également prise en charge et peut être facilement réalisée.

Essayez-le et partagez vos commentaires

Peu importe si vous connaissez déjà Traitement de documents Telerik ou rencontrerez les bibliothèques pour la première fois, dépêchez-vous d’obtenir les dernières informations afin de pouvoir profiter des différentes possibilités de gestion de documents qu’elles offrent :

Télécharger un essai gratuit

Et j’espère que vous savez maintenant que votre contribution est précieuse – nous vous écoutons. Alors, ne soyez pas timide et écrivez-nous pour partager vos commentaires dans la section des commentaires ci-dessous ou directement dans notre Portail de commentaires des bibliothèques de traitement de documents.




Source link

novembre 28, 2022