Lavorare con la gestione dei fogli di calcolo
Lavorare con la gestione dei fogli di calcolo
Il Consiglio ha adottato: Workbook class è l’oggetto di base per tutte le operazioni in foglio di calcolo in Aspose.Cells FOSS for .NET. Fornisce accesso al file di controllo del sistema operativo e all’interfaccia di gestione della scheda di lavoro. WorksheetCollection,Questa guida copre il caricamento tollerante ai guasti, l’organizzazione dei fogli di lavoro, la configurazione del layout per la stampa e i controlli della disposizione delle righe/colonne/cellule.
Caricare le cartelle di lavoro con opzioni di riparazione
Passare un percorso di file al Workbook costruttore per caricare un file XLSX esistente. Fornire una LoadOptions oggetto con TryRepairPackage e di cui al punto 2 TryRepairXml impostato su: true tentare di recuperare file con corruzione strutturale minore. A WorkbookLoadException viene eliminato quando il file non è recuperabile.
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);
}Aggiungere e organizzare fogli di lavoro
Workbook.Worksheets restituisce un WorksheetCollection.Chiamami . Add(name) Per aggiungere un nuovo foglio di lavoro con il nome, il metodo restituisce l’indice del nuovo documento. Accedere ai fogli di ricerca con indici basati su zero o con nome. Impostazione WorksheetCollection.ActiveSheetName per controllare quale scheda è attiva quando il file viene aperto.
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);Nascondere e mostrare i fogli di lavoro
Set di dati Worksheet.VisibilityType a) per il VisibilityType.Hidden Per nascondere un foglio senza eliminarlo. I fogli nascosti sono conservati nel file XLSX e possono essere resi visibili impostando il codice di sicurezza del sistema operativo . VisibilityType.Visible.Il colore della scheda viene impostato tramite: 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");Configurazione della pagina
Worksheet.PageSetup espone tutte le proprietà relative all’impronta. PageOrientationType per passare da ritratto a paesaggio. PaperSizeType Per selezionare una dimensione di carta, definire l’area di stampa con PrintArea, impostare righe/colonne ripetute con: PrintTitleRows/PrintTitleColumns, e aggiungere interruzioni di pagina manuali con AddHorizontalPageBreak e di cui al punto 2 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);Dimensioni di riga e colonna
Accesso Worksheet.Cells.Rows per indice di ottenere un Row Oggetto. Row.Height (in punti) per controllare l’altezza della riga. Row.IsHidden a) per il true Per nascondere la riga. Worksheet.Cells.Columns per indice di ottenere un Column Oggetto. Column.Width (in unità di caratteri) e 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);Celle che si fondono
Chiamami. Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns) La cellula unita eredita il valore della cella in alto a sinistra. Utilizza Worksheet.Cells.MergedCells per rileggere tutte le regioni unite in una cartella di lavoro caricata.
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);Suggerimenti e migliori pratiche
- Utilizzo:
WorksheetCollection.ActiveSheetNameper assicurarsi che la scheda corretta sia selezionata quando il file viene aperto in Excel. - Imposta i margini delle pagine in pollici (
LeftMarginInch,TopMarginInch) si tratta di valori a punto galleggiante, non interi. - Nascondere righe/colonne (
IsHidden = true) conserva i dati; la cancellazione di una riga elimina permanentemente i data. - Chiama sempre.
Workbook.Save()una volta al termine di un’operazione del lotto piuttosto che dopo ogni modifica. - Fusione di celle con parsimonia nelle schede dati regioni fuse impediscono il corretto funzionamento del riordinamento e dell’auto-filtro nell’area fusione.
Problemi comuni
| Numero di pubblicazione | Causa di morte | Rettifica |
|---|---|---|
WorkbookLoadException a carico | Corruzione di ZIP o XML nell’XLSX | Set di dati LoadOptions.TryRepairPackage = true e di cui al punto 2 TryRepairXml = true |
Add(name) restituisce indice errato | Usare il nome della scheda come indice | Add() restituisce un indice int; utilizzare quell’indice per accedere al nuovo foglio |
| Altura della riga non persistente | Altura impostata su 0 o valore negativo | Utilizzare un doppio valore positivo, come ad esempio: 28d |
| Cella unita mostra valore errato | Valore scritto in una cella non superiore sinistra dell’intervallo di fusione | Scrivere il valore nella cella in alto a sinistra prima di chiamare Cells.Merge() |
| Non è presente la rottura di pagina. | AddHorizontalPageBreak chiamato dopo. Save() | Impostazione delle interruzioni prima di chiamare Save() |
FAQ
Quanti fogli di lavoro posso aggiungere?
Il formato XLSX supporta fino a 1024 fogli per cartella di lavoro. I limiti pratici dipendono dalla memoria disponibile e dalle dimensioni del file.
Posso copiare un foglio di lavoro tra le cartelle?
La superficie API corrente non espone un’interfaccia di CopyTo Metodo per le copie di fogli incrociati del libro di lavoro. Caricare entrambi i file e trasferire dati cellula dopo cellule.
Come riordino i fogli di lavoro?
Utilizzo: WorksheetCollection L’accesso all’indice e il rinominamento dei fogli per cambiare l’ordine logico. Il movimento posizionale diretto non è nella superficie API corrente.
Quali unità fanno? PageSetup utilizzazione per i margini?
Tutti i margini (LeftMarginInch, TopMarginInch, ecc.) sono in pollici come double valori.
- Sì. Cells.Merge sostituire i dati cellulari esistenti?
Il valore della cella in alto a sinistra è conservato; i valori delle altre celle unite sono cancellati.
Riassunto di riferimento API
| Classe / metodo | Descrizione |
|---|---|
Workbook | Oggetto root creare, caricare e salvare cartelle di lavoro |
Workbook.Worksheets | Ritorna il valore di WorksheetCollection |
Workbook.Save(path) | Persistire nella cartella di lavoro XLSX |
WorksheetCollection.Add(name) | Aggiungere un nuovo foglio di lavoro con il nome |
WorksheetCollection.ActiveSheetName | Scheda attiva sul file aperto |
Worksheet.VisibilityType | VisibilityType.Hidden o di più. Visible |
Worksheet.TabColor | Colore della scheda (Color) |
Worksheet.PageSetup | Impostazioni del layout di stampa |
PageSetup.Orientation | PageOrientationType.Landscape o di più. Portrait |
PageSetup.PaperSize | PaperSizeType.PaperA4, ecc. |
PageSetup.AddHorizontalPageBreak(row) | Inserire interruzione di pagina orizzontale |
Cells.Rows[index].Height | Altezza della riga in punti |
Cells.Rows[index].IsHidden | Fissare/mostrare riga |
Cells.Columns[index].Width | Larghezza della colonna in unità di caratteri |
Cells.Columns[index].IsHidden | Colonna nascondere/mostrare |
Cells.Merge(row, col, numRows, numCols) | Fusione di un blocco rettangolare |
Cells.MergedCells | Elenco delle regioni fusionate nella scheda |
LoadOptions.TryRepairPackage | Tentativo di riparazione ZIP in carico |
LoadOptions.TryRepairXml | Tentare la riparazione XML al carico |
WorkbookLoadException | Lanciato quando il file non è recuperabile |