Werken met tabellen
Werken met tabellen
Aspose.Cells FOSS voor Java ondersteunt Excel-tabellen (ook bekend als ListObjects of gestructureerde verwijzingen). Je kunt nieuwe tabellen maken vanuit celbereiken, bestaande tabellen inspecteren, kop- en totalenrijen configureren, ingebouwde tabelstijlen toepassen, individuele kolommen benaderen, en tabellen terug converteren naar normale bereiken. Het primaire toegangspunt is ListObjectCollection, toegankelijk via Worksheet.getListObjects().
Overzicht
Tabellen op een werkblad worden beheerd via de ListObjectCollection die wordt geretourneerd door Worksheet.getListObjects(). Elke ListObject vertegenwoordigt één Excel-tabel en geeft de weergavenaam, opmerking, celbereikgrenzen, kolomcollectie, stijlinstellingen en de zichtbaarheid van de kop-/totalenrij weer.
Een nieuwe tabel wordt aangemaakt met ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders), die de nulgebaseerde index van de nieuw aangemaakte tabel teruggeeft. Een alternatieve overload accepteert celnaam-strings: ListObjectCollection.add(startCellName, endCellName, hasHeaders).
Belangrijke klassen
| Klasse | Beschrijving |
|---|---|
ListObject | Stelt een enkele Excel-tabel voor. Biedt getDisplayName(), getComment(), bereikcoördinaten, kolomcollectie, stijltype en zichtbaarheid van kop-/totalenrij. |
ListObjectCollection | Collectie van alle tabellen op een werkblad. Ondersteunt getCount(), geïndexeerd en benoemd opzoekwerk via get(), add(), remove(), en stijltype-conversiehulpjes. |
ListColumn | Stelt één kolom binnen een tabel voor. Biedt kolom-ID, naam en totalenrij-berekeningsinstellingen. |
ListColumnCollection | Geordende collectie van kolommen in een tabel. Iterabel met telling en indextoegang. |
TableStyleType | Enum die een ingebouwde Excel-tabelstijl identificeert (Licht 1–21, Medium 1–28, Donker 1–11, of Aangepast/Geen). |
TotalsCalculation | Enum voor de aggregatiefunctie op de totalenrij van een tabel (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, COUNT_NUMS, CUSTOM, NONE). |
Tabellen op een werkblad benaderen
Haal de ListObjectCollection op uit elke Worksheet via Worksheet.getListObjects(). Gebruik ListObjectCollection.getCount() om te bepalen hoeveel tabellen er bestaan. Individuele tabellen worden benaderd via nulgebaseerde index met ListObjectCollection.get(index) of via weergavenaam met 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());
}Een nieuwe tabel maken
Gebruik ListObjectCollection.add() om een tabel in te voegen over een celbereik. De parameter hasHeaders geeft aan of de eerste rij van het bereik kolomkoppen bevat.
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");Tabeleigenschappen inspecteren
Zodra je een ListObject referentie hebt, kun je lezen:
ListObject.getDisplayName()— de weergavenaam van de tabel.ListObject.getComment()— een optionele opmerking die aan de tabel is gekoppeld.ListObject.getStartRow()/ListObject.getStartColumn()— linkerbovenste cel van het tabelbereik.ListObject.getEndRow()/ListObject.getEndColumn()— rechteronderste cel van het tabelbereik.ListObject.isShowHeaderRow()— of de headerrij zichtbaar is.ListObject.isShowTotals()— of de totalenrij zichtbaar is.ListObject.getListColumns()— deListColumnCollectionvoor de tabel.
Tabellen opmaken
Pas een ingebouwde tabelstijl toe met behulp van ListObject.setTableStyleType(TableStyleType). De TableStyleType enum bevat Light (1–21), Medium (1–28) en Dark (1–11) varianten plus NONE en CUSTOM.
ListObject table = ws.getListObjects().get(0);
table.setTableStyleType(TableStyleType.TABLE_STYLE_MEDIUM_2);Extra stijlopties regelen gestreepte rijen, gestreepte kolommen en de nadruk op de eerste/laatste kolom:
ListObject.setShowTableStyleRowStripes(boolean)ListObject.setShowTableStyleColumnStripes(boolean)ListObject.setShowTableStyleFirstColumn(boolean)ListObject.setShowTableStyleLastColumn(boolean)
U kunt ook een aangepaste stijlnaam instellen met ListObject.setTableStyleName(String).
Helper-methoden ListObjectCollection.parseTableStyleType(String) en ListObjectCollection.tableStyleTypeName(TableStyleType) converteren tussen de enum en de stringrepresentatie.
Werken met tabelkolommen
Toegang tot individuele kolommen via ListObject.getListColumns(), die een ListColumnCollection retourneert. Elke ListColumn biedt:
ListColumn.getId()— de één-gebaseerde OOXML kolomidentificator.ListColumn.getName()/ListColumn.setName(String)— de kolomkoptekst.ListColumn.getTotalsCalculation()/ListColumn.setTotalsCalculation(TotalsCalculation)— de aggregatiefunctie voor de totalenrij.ListColumn.getTotalsRowLabel()/ListColumn.setTotalsRowLabel(String)— een aangepast label in de totalenrij.ListColumn.getTotalsRowFormula()/ListColumn.setTotalsRowFormula(String)— een aangepaste formule voor de totalenrij.
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());
}Configureren van de totalenrij
Schakel de totalenrij in met ListObject.setShowTotals(true), en stel vervolgens per kolom aggregatiefuncties in met behulp van de TotalsCalculation enum.
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");Tabellen herschalen en converteren
Pas de grootte van een tabel aan om een ander celbereik te dekken met ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders).
Converteer een tabel terug naar een normaal celbereik met ListObject.convertToRange(). Dit verwijdert de tabelstructuur terwijl de celgegevens en opmaak behouden blijven.
Verwijder een tabel volledig uit de collectie met ListObjectCollection.removeAt(index).
AutoFilter op Tabellen
Toon of verwijder de kolom-drop-down auto-filterpijlen op een tabel:
ListObject.showAutoFilter()— toon filterpijlen op de koprij.ListObject.removeAutoFilter()— verberg de filterpijlen.
API Reference Samenvatting
ListObject
| Methode | Retourtype | Beschrijving |
|---|---|---|
getDisplayName() | String | Weergavenaam van de tabel. |
setDisplayName(name) | void | Stelt de weergavenaam in. |
getComment() | String | Optionele opmerking voor de tabel. |
setComment(comment) | void | Stelt de tabelcommentaar in. |
getStartRow() | int | Start rij-index van het tabelbereik. |
getStartColumn() | int | Start kolom-index van het tabelbereik. |
getEndRow() | int | Eind rij-index van het tabelbereik. |
getEndColumn() | int | Eindkolomindex van het tabelbereik. |
isShowHeaderRow() | boolean | Of de koprij zichtbaar is. |
setShowHeaderRow(show) | void | Toont of verbergt de koprij. |
isShowTotals() | boolean | Of de totalenrij zichtbaar is. |
setShowTotals(show) | void | Toont of verbergt de totalenrij. |
getTableStyleType() | TableStyleType | De ingebouwde tabelstijl. |
setTableStyleType(type) | void | Past een ingebouwde tabelstijl toe. |
getTableStyleName() | String | Aangepaste tabelstijlnaam. |
setTableStyleName(name) | void | Stelt een aangepaste tabelstijlnaam in. |
getListColumns() | ListColumnCollection | De kolomverzameling van de tabel. |
resize(...) | void | Verandert de grootte van de tabel naar een nieuw bereik. |
convertToRange() | void | Converteert de tabel naar een normaal bereik. |
showAutoFilter() | void | Toont auto-filterpijlen. |
removeAutoFilter() | void | Verbergt auto-filterpijlen. |
ListObjectCollection
| Methode | Retourtype | Beschrijving |
|---|---|---|
getCount() | int | Aantal tabellen op het werkblad. |
get(index) | ListObject | Retourneert de tabel op de opgegeven nulgebaseerde index. |
get(name) | ListObject | Retourneert de tabel met de opgegeven weergavenaam. |
add(startRow, startColumn, endRow, endColumn, hasHeaders) | int | Creëert een nieuwe tabel; retourneert de index. |
add(startCellName, endCellName, hasHeaders) | int | Creëert een nieuwe tabel op basis van celnamen; retourneert de index. |
removeAt(index) | void | Verwijdert de tabel op de opgegeven index. |
parseTableStyleType(name) | TableStyleType | Converteert een string naar een TableStyleType enumwaarde. |
tableStyleTypeName(type) | String | Converteert een TableStyleType enum naar de stringnaam ervan. |
ListColumn
| Methode | Retourtype | Beschrijving |
|---|---|---|
getId() | int | Eén-gebaseerde OOXML kolomidentificator. |
getName() | String | Kolomkoptekst. |
setName(name) | void | Stelt de kolomkoptekst in. |
getTotalsCalculation() | TotalsCalculation | Aggregatiefunctie voor totalenrij. |
setTotalsCalculation(calc) | void | Stelt de totalenrijaggregatie in. |
getTotalsRowLabel() | String | Aangepast label in de totalenrij. |
setTotalsRowLabel(label) | void | Stelt het label van de totalenrij in. |
getTotalsRowFormula() | String | Aangepaste formule voor de totalenrij. |
setTotalsRowFormula(formula) | void | Stelt de formule voor de totalenrij in. |
Beperkingen
- Tabelgegevensbindingen zijn niet afzonderlijk aanpasbaar; de tabel bestrijkt het bereik dat bij het aanmaken is opgegeven. Gebruik
resize()om het gedekte bereik aan te passen. - Aangepaste tabelstijlen moeten in de werkmap worden gedefinieerd voordat ze via
setTableStyleName()bij naam worden aangeroepen.