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
| Classe | Descrizione |
|---|---|
ListObject | Rappresenta 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. |
ListObjectCollection | Raccolta 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. |
ListColumn | Rappresenta una colonna all’interno di una tabella. Espone l’ID colonna, il nome e le impostazioni di calcolo della riga dei totali. |
ListColumnCollection | Raccolta ordinata di colonne in una tabella. Iterabile con conteggio e accesso per indice. |
TableStyleType | Enum che identifica uno stile di tabella Excel incorporato (Light 1–21, Medium 1–28, Dark 1–11, o Custom/None). |
TotalsCalculation | Enum 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()— ilListColumnCollectionper 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
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
getDisplayName() | String | Nome visualizzato della tabella. |
setDisplayName(name) | void | Imposta il nome visualizzato. |
getComment() | String | Commento opzionale per la tabella. |
setComment(comment) | void | Imposta il commento della tabella. |
getStartRow() | int | Indice di riga iniziale dell’intervallo della tabella. |
getStartColumn() | int | Indice di colonna iniziale dell’intervallo della tabella. |
getEndRow() | int | Indice di riga finale dell’intervallo della tabella. |
getEndColumn() | int | Indice della colonna finale dell’intervallo della tabella. |
isShowHeaderRow() | boolean | Se la riga di intestazione è visibile. |
setShowHeaderRow(show) | void | Mostra o nasconde la riga di intestazione. |
isShowTotals() | boolean | Se la riga dei totali è visibile. |
setShowTotals(show) | void | Mostra o nasconde la riga dei totali. |
getTableStyleType() | TableStyleType | Stile di tabella incorporato. |
setTableStyleType(type) | void | Applica uno stile di tabella incorporato. |
getTableStyleName() | String | Nome dello stile di tabella personalizzato. |
setTableStyleName(name) | void | Imposta un nome di stile della tabella personalizzato. |
getListColumns() | ListColumnCollection | La raccolta di colonne della tabella. |
resize(...) | void | Ridimensiona la tabella a un nuovo intervallo. |
convertToRange() | void | Converte la tabella in un intervallo normale. |
showAutoFilter() | void | Visualizza le frecce di auto-filtro. |
removeAutoFilter() | void | Nasconde le frecce di auto-filtro. |
ListObjectCollection
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
getCount() | int | Numero di tabelle nel foglio di lavoro. |
get(index) | ListObject | Restituisce la tabella all’indice zero-based specificato. |
get(name) | ListObject | Restituisce la tabella con il nome visualizzato fornito. |
add(startRow, startColumn, endRow, endColumn, hasHeaders) | int | Crea una nuova tabella; restituisce il suo indice. |
add(startCellName, endCellName, hasHeaders) | int | Crea una nuova tabella a partire dai nomi delle celle; restituisce il suo indice. |
removeAt(index) | void | Rimuove la tabella all’indice fornito. |
parseTableStyleType(name) | TableStyleType | Converte una stringa in un valore enum TableStyleType. |
tableStyleTypeName(type) | String | Converte un enum TableStyleType nel suo nome stringa. |
ListColumn
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
getId() | int | Identificatore di colonna OOXML basato su indice a partire da 1. |
getName() | String | Testo dell’intestazione della colonna. |
setName(name) | void | Imposta il testo dell’intestazione della colonna. |
getTotalsCalculation() | TotalsCalculation | Funzione di aggregazione della riga dei totali. |
setTotalsCalculation(calc) | void | Imposta l’aggregazione della riga dei totali. |
getTotalsRowLabel() | String | Etichetta personalizzata nella riga dei totali. |
setTotalsRowLabel(label) | void | Imposta l’etichetta della riga dei totali. |
getTotalsRowFormula() | String | Formula personalizzata per la riga dei totali. |
setTotalsRowFormula(formula) | void | Imposta 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().