Lavorare con la gestione dei fogli di calcolo

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.ActiveSheetName per 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 pubblicazioneCausa di morteRettifica
WorkbookLoadException a caricoCorruzione di ZIP o XML nell’XLSXSet di dati LoadOptions.TryRepairPackage = true e di cui al punto 2 TryRepairXml = true
Add(name) restituisce indice erratoUsare il nome della scheda come indiceAdd() restituisce un indice int; utilizzare quell’indice per accedere al nuovo foglio
Altura della riga non persistenteAltura impostata su 0 o valore negativoUtilizzare un doppio valore positivo, come ad esempio: 28d
Cella unita mostra valore erratoValore scritto in una cella non superiore sinistra dell’intervallo di fusioneScrivere 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 / metodoDescrizione
WorkbookOggetto root creare, caricare e salvare cartelle di lavoro
Workbook.WorksheetsRitorna 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.ActiveSheetNameScheda attiva sul file aperto
Worksheet.VisibilityTypeVisibilityType.Hidden o di più. Visible
Worksheet.TabColorColore della scheda (Color)
Worksheet.PageSetupImpostazioni del layout di stampa
PageSetup.OrientationPageOrientationType.Landscape o di più. Portrait
PageSetup.PaperSizePaperSizeType.PaperA4, ecc.
PageSetup.AddHorizontalPageBreak(row)Inserire interruzione di pagina orizzontale
Cells.Rows[index].HeightAltezza della riga in punti
Cells.Rows[index].IsHiddenFissare/mostrare riga
Cells.Columns[index].WidthLarghezza della colonna in unità di caratteri
Cells.Columns[index].IsHiddenColonna nascondere/mostrare
Cells.Merge(row, col, numRows, numCols)Fusione di un blocco rettangolare
Cells.MergedCellsElenco delle regioni fusionate nella scheda
LoadOptions.TryRepairPackageTentativo di riparazione ZIP in carico
LoadOptions.TryRepairXmlTentare la riparazione XML al carico
WorkbookLoadExceptionLanciato quando il file non è recuperabile
 Italiano