Lavorare con la gestione dei fogli di calcolo

Lavorare con la gestione dei fogli di calcolo

Lavorare con la gestione dei fogli di calcolo

Questa guida mostra come creare, caricare, modificare e salvare cartelle di lavoro Excel utilizzando Aspose.Cells FOSS per Java. Imparerai a lavorare con le classi Workbook, WorksheetCollection, Worksheet, Cells e Cell per una gestione completa dei fogli di calcolo.


Creare una nuova cartella di lavoro

Utilizza il costruttore senza argomenti per creare una cartella di lavoro vuota. Un singolo foglio vuoto chiamato Sheet1 viene aggiunto automaticamente.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
System.out.println("Sheet name: " + sheet.getName()); // Sheet1

Caricamento di una cartella di lavoro da un file

Passa un percorso file al costruttore Workbook(fileName) per aprire un file .xlsx o .ods esistente. Usa Workbook(fileName, options) per fornire LoadOptions quando è necessario controllare il rilevamento del formato o la gestione della password.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.LoadOptions;

// Simple load
Workbook workbook = new Workbook("data/report.xlsx");

// Load with explicit options
LoadOptions opts = new LoadOptions();
Workbook workbookWithOpts = new Workbook("data/report.xlsx", opts);

Caricamento di una cartella di lavoro da uno stream

Workbook(stream) e Workbook(stream, options) accettano qualsiasi java.io.InputStream. Questo è utile quando il file proviene da una risorsa di rete, da un BLOB di database o da un array di byte in memoria.

import com.aspose.cells.foss.Workbook;
import java.io.FileInputStream;
import java.io.InputStream;

try (InputStream is = new FileInputStream("data/template.xlsx")) {
    Workbook workbook = new Workbook(is);
    System.out.println("Worksheets: " + workbook.getWorksheets().getCount());
}

Accesso e gestione dei fogli di lavoro

Workbook.getWorksheets() restituisce un WorksheetCollection. Recupera i fogli per indice o per nome, itera su tutti i fogli e aggiungi o rimuovi i fogli secondo necessità.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();

// Access by index
Worksheet first = sheets.get(0);
System.out.println(first.getName()); // Sheet1

// Add a named sheet
int idx = sheets.add("Summary");
Worksheet summary = sheets.get(idx);
summary.setName("Summary");

// Iterate all sheets
for (Worksheet ws : sheets) {
    System.out.println("Sheet: " + ws.getName());
}

// Remove a sheet by name
sheets.removeAt("Sheet1");
System.out.println("Remaining sheets: " + sheets.getCount());

Lettura e scrittura dei valori delle celle

Naviga a una cella usando Worksheet.getCells(), che restituisce una collezione Cells. Recupera un Cell per nome (ad esempio "A1") o per indice di riga/colonna a base zero. Usa putValue() per scrivere valori primitivi e getValue() / getStringValue() per leggerli.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Worksheet;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
Cells cells = sheet.getCells();

// Write values
cells.get("A1").putValue("Product");
cells.get("B1").putValue("Units Sold");

// Write by row/column index (0-based)
Cell a2 = cells.get(1, 0);
a2.putValue("Widget A");

Cell b2 = cells.get(1, 1);
b2.putValue(1200);

// Read back
System.out.println(a2.getStringValue()); // Widget A
System.out.println(b2.getValue());       // 1200

Impostazione delle formule delle celle

Assegna una stringa di formula a una cella tramite setFormula(). Aspose.Cells valuta le formule quando la cartella di lavoro viene salvata o quando il calcolo viene attivato esplicitamente.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Cells cells = sheets.get(0).getCells();

cells.get("A1").putValue(100);
cells.get("A2").putValue(200);

Cell a3 = cells.get("A3");
a3.setFormula("=SUM(A1:A2)");
System.out.println("Formula: " + a3.getFormula()); // =SUM(A1:A2)

Salvataggio di una cartella di lavoro

Usa Workbook.save(fileName) per scrivere la cartella di lavoro su disco. Il formato di output è determinato dall’estensione del file; usa .xlsx per le cartelle di lavoro Excel.

import com.aspose.cells.foss.Workbook;

Workbook workbook = new Workbook();
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello");

// Save to file -- format inferred from .xlsx extension
workbook.save("output/result.xlsx");

Rilascio delle risorse

Workbook implementa AutoCloseable. Usa un blocco try-with-resources per garantire che le risorse interne della cartella di lavoro vengano rilasciate prontamente dopo l’uso.

import com.aspose.cells.foss.Workbook;

try (Workbook workbook = new Workbook("data/large.xlsx")) {
    workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automatically

Suggerimenti e migliori pratiche

  • Usa sempre try-with-resources (try (Workbook wb = new Workbook(...))) per file di grandi dimensioni per evitare di tenere aperti i handle dei file.
  • Preferisci cells.get(row, column) rispetto a cells.get(cellName) nei cicli critici; la sovraccarico intera evita il parsing ripetuto dei nomi delle celle.
  • Chiama workbook.getWorksheets().getCount() prima di accedere ai fogli per indice per evitare IndexOutOfBoundsException.
  • Assegna ai tuoi fogli un nome esplicito con setName() dopo add() in modo che il codice a valle possa cercarli per nome anziché per indice fragile.
  • Non fare affidamento sui risultati delle formule subito dopo setFormula(); salva prima o ricarica se hai bisogno dei valori calcolati nella stessa sessione.

Problemi comuni

ProblemaCausaCorrezione
WorkbookLoadException su new Workbook(fileName)Percorso del file errato o file bloccatoVerifica che il percorso esista e sia leggibile; chiudi le altre applicazioni che tengono il file
get(index) lancia IndexOutOfBoundsExceptionIndice del foglio oltre getCount() - 1Verifica sheets.getCount() prima di accedere; usa add() per creare un nuovo foglio
La cella della formula restituisce getValue() vuotoLe formule non vengono calcolate automaticamente in memoriaSalva la cartella di lavoro e ricaricala per ottenere i risultati delle formule
Il file di output è corrotto dopo save()Estensione del file errataAssicurati che il nome del file termini con .xlsx; il formato è dedotto dall’estensione

FAQ

Come rinominare un foglio di lavoro?

Recupera l’oggetto Worksheet per indice da WorksheetCollection e chiama setName(name) con il nuovo nome visualizzato:

workbook.getWorksheets().get(0).setName("Sales Data");

Come verificare quanti fogli ha una cartella di lavoro?

Chiama getCount() sul WorksheetCollection restituito da Workbook.getWorksheets() per ottenere il numero totale di fogli di lavoro:

int count = workbook.getWorksheets().getCount();

Posso aggiungere più fogli in una singola chiamata?

No. Chiama worksheets.add(sheetName) una volta per foglio. Ogni chiamata restituisce l’indice del foglio appena creato.

Come verificare il tipo di un valore di cella?

Recupera il Cell per nome e chiama getType(), che restituisce un valore enum CellValueType:

Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum value

API Reference Riepilogo

Classe / MetodoDescrizione
Workbook()Crea una cartella di lavoro vuota con un foglio vuoto
Workbook(fileName)Carica una cartella di lavoro da un percorso di file
Workbook(stream)Carica una cartella di lavoro da un InputStream
Workbook(fileName, options)Carica una cartella di lavoro con LoadOptions
Workbook.getWorksheets()Restituisce il WorksheetCollection
Workbook.save(fileName)Salva su un file (formato dedotto dall’estensione)
Workbook.save(stream, format)Salva su uno stream con SaveFormat esplicito
WorksheetCollection.get(index)Restituisce il foglio mediante indice a base zero
WorksheetCollection.get(name)Restituisce il foglio per nome
WorksheetCollection.add(sheetName)Aggiunge un foglio con nome; restituisce il suo indice
WorksheetCollection.getCount()Numero di fogli nella cartella di lavoro
WorksheetCollection.removeAt(sheetName)Rimuove un foglio per nome
Worksheet.getCells()Restituisce la collezione Cells per questo foglio
Worksheet.getName() / setName()Ottiene o imposta il nome della scheda del foglio
Cells.get(cellName)Restituisce un Cell per nome (ad es. “A1”)
Cells.get(row, column)Restituisce un Cell per riga/colonna indicizzati a zero
Cell.putValue(value)Scrive un valore nella cella
Cell.getValue()Legge il valore della cella come Object
Cell.getStringValue()Legge il valore della cella come un String
Cell.setFormula(formula)Imposta una stringa di formula (ad es. “=SUM(A1:A2)”)
LoadOptionsConfigurazione per il caricamento della cartella di lavoro
SaveFormatEnum dei costanti di formato (il formato è dedotto dall’estensione del file; non viene passato a save())

Vedi anche

 Italiano