Lavorare con le tabelle

Lavorare con le tabelle

Aspose.Cells FOSS per Java supporta le tabelle Excel (conosciute anche come ListObjects o riferimenti strutturati). È possibile creare nuove tabelle da intervalli di celle, ispezionare le tabelle esistenti, configurare le righe di intestazione e di totale, applicare stili di tabella predefiniti, accedere a singole colonne e convertire le tabelle nuovamente in intervalli normali. Il punto di ingresso principale è ListObjectCollection, accessibile tramite Worksheet.getListObjects().


Panoramica

Le tabelle su un foglio di lavoro sono gestite tramite il ListObjectCollection restituito da Worksheet.getListObjects(). Ogni ListObject rappresenta una tabella Excel e fornisce il nome visualizzato, il commento, i limiti dell’intervallo di celle, la raccolta di colonne, le impostazioni di stile e la visibilità delle righe di intestazione e di totale.

Una nuova tabella viene creata con ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders), che restituisce l’indice basato su zero della tabella appena creata. Un sovraccarico alternativo accetta stringhe di nomi di celle: ListObjectCollection.add(startCellName, endCellName, hasHeaders).


Classi principali

ClasseDescrizione
ListObjectRappresenta una singola tabella Excel. Espone getDisplayName(), getComment(), le coordinate dell’intervallo, la raccolta di colonne, il tipo di stile e la visibilità della riga di intestazione e di totali.
ListObjectCollectionRaccolta di tutte le tabelle presenti in un foglio di lavoro. Supporta getCount(), la ricerca indicizzata e per nome tramite get(), add(), remove(), e gli helper di conversione tipo-stile.
ListColumnRappresenta una colonna all’interno di una tabella. Espone l’ID colonna, il nome e le impostazioni di calcolo della riga dei totali.
ListColumnCollectionRaccolta ordinata di colonne in una tabella. Iterabile con conteggio e accesso per indice.
TableStyleTypeEnum che identifica uno stile di tabella Excel incorporato (Light 1–21, Medium 1–28, Dark 1–11, o Custom/None).
TotalsCalculationEnum per la funzione di aggregazione nella riga dei totali di una tabella (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, COUNT_NUMS, CUSTOM, NONE).

Accesso alle tabelle su un foglio di lavoro

Recupera il ListObjectCollection da qualsiasi Worksheet tramite Worksheet.getListObjects(). Usa ListObjectCollection.getCount() per determinare quante tabelle esistono. Le singole tabelle sono accessibili tramite l’indice basato su zero con ListObjectCollection.get(index) o per nome visualizzato con ListObjectCollection.get(name).

Workbook wb = new Workbook("input.xlsx");
WorksheetCollection sheets = wb.getWorksheets();
Worksheet ws = sheets.get(0);
ListObjectCollection tables = ws.getListObjects();

for (int i = 0; i < tables.getCount(); i++) {
    ListObject table = tables.get(i);
    System.out.println("Table: " + table.getDisplayName()
        + " rows: " + table.getStartRow() + "-" + table.getEndRow());
}

Creare una nuova tabella

Utilizza ListObjectCollection.add() per inserire una tabella su un intervallo di celle. Il parametro hasHeaders indica se la prima riga dell’intervallo contiene le intestazioni di colonna.

Workbook wb = new Workbook();
WorksheetCollection sheets = wb.getWorksheets();
Worksheet ws = sheets.get(0);

// Populate data
ws.getCells().get("A1").putValue("Product");
ws.getCells().get("B1").putValue("Quantity");
ws.getCells().get("A2").putValue("Widget");
ws.getCells().get("B2").putValue(100);

// Create table over A1:B2 with headers in row 0
int tableIndex = ws.getListObjects().add(0, 0, 1, 1, true);
ListObject table = ws.getListObjects().get(tableIndex);
table.setDisplayName("SalesTable");

Ispezione delle proprietà della tabella

Una volta che possiedi un riferimento ListObject puoi leggere:

  • ListObject.getDisplayName() — la stringa del nome visualizzato della tabella.
  • ListObject.getComment() — un commento facoltativo associato alla tabella.
  • ListObject.getStartRow() / ListObject.getStartColumn() — cella in alto a sinistra dell’intervallo della tabella.
  • ListObject.getEndRow() / ListObject.getEndColumn() — cella in basso a destra dell’intervallo della tabella.
  • ListObject.isShowHeaderRow() — se la riga di intestazione è visibile.
  • ListObject.isShowTotals() — se la riga dei totali è visibile.
  • ListObject.getListColumns() — il ListColumnCollection per la tabella.

Stilizzare le tabelle

Applica uno stile di tabella predefinito usando ListObject.setTableStyleType(TableStyleType). L’enumerazione TableStyleType include le varianti Light (1–21), Medium (1–28) e Dark (1–11) oltre a NONE e CUSTOM.

ListObject table = ws.getListObjects().get(0);
table.setTableStyleType(TableStyleType.TABLE_STYLE_MEDIUM_2);

Interruttori di stile aggiuntivi controllano le righe alternate, le colonne alternate e l’evidenziazione della prima/ultima colonna:

  • ListObject.setShowTableStyleRowStripes(boolean)
  • ListObject.setShowTableStyleColumnStripes(boolean)
  • ListObject.setShowTableStyleFirstColumn(boolean)
  • ListObject.setShowTableStyleLastColumn(boolean)

Puoi anche impostare un nome di stile personalizzato con ListObject.setTableStyleName(String).

I metodi di supporto ListObjectCollection.parseTableStyleType(String) e ListObjectCollection.tableStyleTypeName(TableStyleType) convertono tra l’enumerazione e la sua rappresentazione stringa.


Lavorare con le colonne della tabella

Accedi alle singole colonne tramite ListObject.getListColumns(), che restituisce un ListColumnCollection. Ogni ListColumn espone:

  • ListColumn.getId() — l’identificatore di colonna OOXML basato su indice a partire da 1.
  • ListColumn.getName() / ListColumn.setName(String) — il testo dell’intestazione della colonna.
  • ListColumn.getTotalsCalculation() / ListColumn.setTotalsCalculation(TotalsCalculation) — la funzione di aggregazione per la riga di riepilogo.
  • ListColumn.getTotalsRowLabel() / ListColumn.setTotalsRowLabel(String) — un’etichetta personalizzata nella riga di riepilogo.
  • ListColumn.getTotalsRowFormula() / ListColumn.setTotalsRowFormula(String) — una formula personalizzata per la riga di riepilogo.
ListObject table = ws.getListObjects().get(0);
ListColumnCollection columns = table.getListColumns();
for (int i = 0; i < columns.getCount(); i++) {
    ListColumn col = columns.get(i);
    System.out.println("Column " + col.getId() + ": " + col.getName());
}

Configurazione della riga di riepilogo

Abilita la riga di riepilogo con ListObject.setShowTotals(true), quindi imposta le funzioni di aggregazione per colonna usando l’enumerazione TotalsCalculation.

ListObject table = ws.getListObjects().get(0);
table.setShowTotals(true);

ListColumn qtyColumn = table.getListColumns().get(1);
qtyColumn.setTotalsCalculation(TotalsCalculation.SUM);

ListColumn labelColumn = table.getListColumns().get(0);
labelColumn.setTotalsRowLabel("Total");

Ridimensionamento e conversione delle tabelle

Ridimensiona una tabella per coprire un intervallo di celle diverso usando ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders).

Converti una tabella nuovamente in un intervallo di celle normale con ListObject.convertToRange(). Questo rimuove la struttura della tabella mantenendo i dati e la formattazione delle celle.

Rimuovi completamente una tabella dalla raccolta con ListObjectCollection.removeAt(index).


AutoFilter su Tabelle

Mostra o rimuovi le frecce a discesa del filtro automatico delle colonne su una tabella:

  • ListObject.showAutoFilter() — visualizza le frecce del filtro nella riga di intestazione.
  • ListObject.removeAutoFilter() — nascondi le frecce del filtro.

API Reference riepilogo

ListObject

MetodoTipo di ritornoDescrizione
getDisplayName()StringNome visualizzato della tabella.
setDisplayName(name)voidImposta il nome visualizzato.
getComment()StringCommento opzionale per la tabella.
setComment(comment)voidImposta il commento della tabella.
getStartRow()intIndice di riga iniziale dell’intervallo della tabella.
getStartColumn()intIndice di colonna iniziale dell’intervallo della tabella.
getEndRow()intIndice di riga finale dell’intervallo della tabella.
getEndColumn()intIndice della colonna finale dell’intervallo della tabella.
isShowHeaderRow()booleanSe la riga di intestazione è visibile.
setShowHeaderRow(show)voidMostra o nasconde la riga di intestazione.
isShowTotals()booleanSe la riga dei totali è visibile.
setShowTotals(show)voidMostra o nasconde la riga dei totali.
getTableStyleType()TableStyleTypeStile di tabella incorporato.
setTableStyleType(type)voidApplica uno stile di tabella incorporato.
getTableStyleName()StringNome dello stile di tabella personalizzato.
setTableStyleName(name)voidImposta un nome di stile della tabella personalizzato.
getListColumns()ListColumnCollectionLa raccolta di colonne della tabella.
resize(...)voidRidimensiona la tabella a un nuovo intervallo.
convertToRange()voidConverte la tabella in un intervallo normale.
showAutoFilter()voidVisualizza le frecce di auto-filtro.
removeAutoFilter()voidNasconde le frecce di auto-filtro.

ListObjectCollection

MetodoTipo di ritornoDescrizione
getCount()intNumero di tabelle nel foglio di lavoro.
get(index)ListObjectRestituisce la tabella all’indice zero-based specificato.
get(name)ListObjectRestituisce la tabella con il nome visualizzato fornito.
add(startRow, startColumn, endRow, endColumn, hasHeaders)intCrea una nuova tabella; restituisce il suo indice.
add(startCellName, endCellName, hasHeaders)intCrea una nuova tabella a partire dai nomi delle celle; restituisce il suo indice.
removeAt(index)voidRimuove la tabella all’indice fornito.
parseTableStyleType(name)TableStyleTypeConverte una stringa in un valore enum TableStyleType.
tableStyleTypeName(type)StringConverte un enum TableStyleType nel suo nome stringa.

ListColumn

MetodoTipo di ritornoDescrizione
getId()intIdentificatore di colonna OOXML basato su indice a partire da 1.
getName()StringTesto dell’intestazione della colonna.
setName(name)voidImposta il testo dell’intestazione della colonna.
getTotalsCalculation()TotalsCalculationFunzione di aggregazione della riga dei totali.
setTotalsCalculation(calc)voidImposta l’aggregazione della riga dei totali.
getTotalsRowLabel()StringEtichetta personalizzata nella riga dei totali.
setTotalsRowLabel(label)voidImposta l’etichetta della riga dei totali.
getTotalsRowFormula()StringFormula personalizzata per la riga dei totali.
setTotalsRowFormula(formula)voidImposta la formula della riga dei totali.

Limitazioni

  • I vincoli dei dati della tabella non sono modificabili separatamente; la tabella copre l’intervallo specificato al momento della creazione. Usa resize() per regolare l’intervallo coperto.
  • Gli stili di tabella personalizzati devono essere definiti nella cartella di lavoro prima di fare riferimento a loro per nome tramite setTableStyleName().

Vedi anche

 Italiano