Travailler avec le Spreadsheet Management
Travailler avec le Spreadsheet Management
Le Workbook classe est l’objet de base pour toutes les opérations dans le panneau d’écran.Cells FOSS pour .NET. Il fournit accès à la WorksheetCollection, les noms définis, et le cycle de vie d’enregistrement/charge. Ce guide couvre la charge tolérante des erreurs, l’organisation du feuille de travail, la configuration de layout imprimé et les contrôles de rang / colonne / cellule.
Carte de livres avec Options de réparation
Passez un fichier à la route de Workbook Constructeur pour charger un fichier XLSX existant. fournir une LoadOptions Objet avec TryRepairPackage et TryRepairXml Sette à true pour tenter de récupérer des fichiers avec une minuscule corruption structurelle. a) WorkbookLoadException Il est jeté lorsque le fichier n’est pas récupérable.
using Aspose.Cells_FOSS;
var options = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("data.xlsx", options);
Console.WriteLine("Sheets: " + wb.Worksheets.Count);
Console.WriteLine("Cell A1: " + wb.Worksheets[0].Cells["A1"].StringValue);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Unrecoverable: " + ex.Message);
}Ajouter et organiser des feuilles de travail
Workbook.Worksheets Retour à A WorksheetCollection.- appeler Add(name) pour ajouter un nouveau feuillet de travail par nom; la méthode retourne l’indice du nouvel feuille. Access feuilles de travaux par index basé sur zéro ou par Nom. WorksheetCollection.ActiveSheetName Pour contrôler la barre qui est active lorsque le fichier s’ouvre.
using Aspose.Cells_FOSS;
var wb = new Workbook();
// Rename the default sheet
wb.Worksheets[0].Name = "Summary";
// Add sheets
var dataIdx = wb.Worksheets.Add("Data");
var archiveIdx = wb.Worksheets.Add("Archive");
// Set active sheet
wb.Worksheets.ActiveSheetName = "Data";
// Write to sheets by name
wb.Worksheets["Summary"].Cells["A1"].PutValue("Overview total");
wb.Worksheets["Data"].Cells["A1"].PutValue("Raw rows start here");
wb.Save("organised.xlsx");
// Verify
var loaded = new Workbook("organised.xlsx");
Console.WriteLine("Active: " + loaded.Worksheets.ActiveSheetName);
Console.WriteLine("Sheet count: " + loaded.Worksheets.Count);Mettre en scène et montrer des feuilles de travail
Sélection Worksheet.VisibilityType à VisibilityType.Hidden pour cacher une feuille sans la supprimer. les feuilles cachées sont conservées dans le fichier XLSX et peuvent être rendues visibles par configuration VisibilityType.Visible.La couleur de la table est fixée via Worksheet.TabColor.
using Aspose.Cells_FOSS;
var wb = new Workbook();
wb.Worksheets[0].Name = "Visible";
var hiddenIdx = wb.Worksheets.Add("Internal");
var hiddenSheet = wb.Worksheets[hiddenIdx];
hiddenSheet.VisibilityType = VisibilityType.Hidden;
hiddenSheet.Cells["A1"].PutValue("Internal data");
wb.Worksheets["Visible"].TabColor = Color.FromArgb(255, 70, 130, 180);
wb.Save("hidden.xlsx");Configuration de page Setup
Worksheet.PageSetup Exposer toutes les propriétés liées à l’impression. Utilisez PageOrientationType Pour changer entre le portrait et le paysage. PaperSizeType Pour sélectionner une taille de papier, définissez la zone d’impression avec PrintArea, définir les lignes répétées / colonnes avec PrintTitleRows/PrintTitleColumns,et ajouter des pauses de page manuelles avec AddHorizontalPageBreak et AddVerticalPageBreak.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Sample data
for (var r = 0; r < 60; r++)
ws.Cells[r, 0].PutValue("Row " + (r + 1));
var ps = ws.PageSetup;
ps.Orientation = PageOrientationType.Landscape;
ps.PaperSize = PaperSizeType.PaperA4;
ps.LeftMarginInch = 0.5d;
ps.RightMarginInch = 0.5d;
ps.TopMarginInch = 0.75d;
ps.BottomMarginInch = 0.75d;
ps.PrintArea = "$A$1:$H$60";
ps.PrintTitleRows = "$1:$1";
ps.CenterHeader = "Sales Report";
ps.LeftFooter = "Confidential";
ps.RightFooter = "Page &P of &N";
ps.PrintGridlines = true;
ps.CenterHorizontally = true;
ps.AddHorizontalPageBreak(30);
wb.Save("paged.xlsx");
var loaded = new Workbook("paged.xlsx");
Console.WriteLine("Orientation: " + loaded.Worksheets[0].PageSetup.Orientation);
Console.WriteLine("Print area: " + loaded.Worksheets[0].PageSetup.PrintArea);Ronde et colonne de taille
Accès Worksheet.Cells.Rows par index pour obtenir un Row Objet : Set Row.Height (en points) pour contrôler la hauteur de la ligne. Row.IsHidden à true Pour cacher la ligne.Access Worksheet.Cells.Columns par index pour obtenir un Column Objet : Set Column.Width (en unités de caractère) et Column.IsHidden.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Populate data
for (var r = 0; r < 5; r++)
for (var c = 0; c < 4; c++)
ws.Cells[r, c].PutValue($"R{r + 1}C{c + 1}");
// Row height and visibility
ws.Cells.Rows[0].Height = 28d; // Header taller
ws.Cells.Rows[3].IsHidden = true; // Hide row 4
// Column width and visibility
ws.Cells.Columns[0].Width = 22d;
ws.Cells.Columns[3].IsHidden = true;
wb.Save("layout.xlsx");
var loaded = new Workbook("layout.xlsx");
Console.WriteLine("Row 0 height: " + loaded.Worksheets[0].Cells.Rows[0].Height);
Console.WriteLine("Col 0 width: " + loaded.Worksheets[0].Cells.Columns[0].Width);Les cellules qui se déchirent
Appel à Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns) pour fusionner un bloc rectangulaire contagieux dans une seule cellule. la cellulée fuse hérite de la valeur de l’encre supérieur gauche. Worksheet.Cells.MergedCells Pour lire toutes les régions fusionnées dans un livre de travail chargé.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Title spanning A1:D1
ws.Cells["A1"].PutValue("Quarterly Sales Report");
ws.Cells.Merge(0, 0, 1, 4);
// Section header spanning A3:D3
ws.Cells["A3"].PutValue("Region: North");
ws.Cells.Merge(2, 0, 1, 4);
// Column headers
ws.Cells["A4"].PutValue("Product"); ws.Cells["B4"].PutValue("Q1");
ws.Cells["C4"].PutValue("Q2"); ws.Cells["D4"].PutValue("Q3");
wb.Save("report.xlsx");
var loaded = new Workbook("report.xlsx");
Console.WriteLine("Merged regions: " + loaded.Worksheets[0].Cells.MergedCells.Count);Conseils et meilleures pratiques
- Utiliser
WorksheetCollection.ActiveSheetNamePour s’assurer que la barre correcte est sélectionnée lorsque le fichier s’ouvre dans Excel. - Déterminer les marges de page en pouces (
LeftMarginInch,TopMarginInchCe sont des valeurs de point flottant, pas des intégrations. - Les écrans de la colonne (
IsHidden = true• préserver leurs données ; supprimer une ligne supprime les données de manière permanente. - Toujours appeler
Workbook.Save()Une fois à la fin d’une opération de batch plutôt que après chaque changement. - Mélanger les cellules de manière économe dans les feuilles de données - les régions fusionnées empêchent la sortie et le filtre automatique d’être correctement fonctionnant sur l’espace fusique.
Les problèmes communs
| Problème | Cause | Fixé |
|---|---|---|
WorkbookLoadException sur le chargement | Corrupte ZIP ou XML dans le XLSX | Sélection LoadOptions.TryRepairPackage = true et TryRepairXml = true |
Add(name) Retourner l’index erroné | Utiliser le nom de la feuille comme index | Add() retourner un index int; utilisez cet index pour accéder à la nouvelle feuille de données |
| La hauteur de la roule ne persiste pas | La hauteur fixée à 0 ou la valeur négative | Utilisez une double valeur positive comme : 28d |
| La cellule enfoncée montre une valeur erronée | Valeur écrite à une cellule non-top gauche de la gamme d’unification | Écrivez la valeur à la cellule supérieure gauche avant de vous appeler. Cells.Merge() |
| Page breaking ne apparaît pas | AddHorizontalPageBreak Appelée après Save() | Configurer des interruptions avant de faire appel Save() |
FAQ
Combien de feuilles d’œuvre puis-je ajouter ?
Le format XLSX prend en charge jusqu’à 1024 feuilles par boîte de travail.Les limites pratiques dépendent de la mémoire disponible et du volume des fichiers.
Puis-je copier un feuille de travail entre les livres ?
La surface actuelle de l’API ne présente pas une CopyTo méthode pour les copies de feuilles de travail. chargez les deux fichiers et transférez des données cellule par cellulaire.
Comment réorganiser les feuilles de travail ?
Utiliser WorksheetCollection l’accès à l’index et les feuilles de renommée pour modifier leur ordre logique. mouvement positionnel direct n’est pas dans la surface API actuelle.
Quelles unités sont PageSetup Utiliser des marges ?
Les propriétés de la marque (LeftMarginInch, TopMarginInch,et dans les inches comme double Les valeurs.
Le fait Cells.Merge remplacer les données cellulaires existantes ?
La valeur de la cellule supérieure gauche est conservée ; les valeurs dans les autres cellules fusionnées sont nettoyées.
Le résumé de référence API
| Classes / Méthodes | Description |
|---|---|
Workbook | Objet de racine - Créer, charger, sauvegarder des livres de travail |
Workbook.Worksheets | Retourner le WorksheetCollection |
Workbook.Save(path) | Le livre de travail persistant pour XLSX |
WorksheetCollection.Add(name) | Appliquer un nouveau feuillet de travail par nom |
WorksheetCollection.ActiveSheetName | -Active sur le fichier ouvert |
Worksheet.VisibilityType | VisibilityType.Hidden ou Visible |
Worksheet.TabColor | Le coloris (Color) |
Worksheet.PageSetup | Imprimer les paramètres de layout |
PageSetup.Orientation | PageOrientationType.Landscape ou Portrait |
PageSetup.PaperSize | PaperSizeType.PaperA4,et etc. |
PageSetup.AddHorizontalPageBreak(row) | Insérer la page horizontale |
Cells.Rows[index].Height | L’altitude en points |
Cells.Rows[index].IsHidden | Écran / Show Rue |
Cells.Columns[index].Width | La largeur de la colonne dans les unités de caractère |
Cells.Columns[index].IsHidden | Écran / Show Colonne |
Cells.Merge(row, col, numRows, numCols) | Un bloc rectangulaire |
Cells.MergedCells | Liste des régions mélangées dans la feuille de données |
LoadOptions.TryRepairPackage | Tentez de réparer ZIP sur charge |
LoadOptions.TryRepairXml | Tentez de réparer XML sur charge |
WorkbookLoadException | Résumé lorsque le fichier est inoubliable |