Arbeiten mit Tabellen
Arbeiten mit Tabellen
Aspose.Cells FOSS für Java unterstützt Excel-Tabellen (auch bekannt als ListObjects oder strukturierte Verweise). Sie können neue Tabellen aus Zellbereichen erstellen, vorhandene Tabellen prüfen, Kopf- und Summenzeilen konfigurieren, integrierte Tabellenvorlagen anwenden, auf einzelne Spalten zugreifen und Tabellen wieder in normale Bereiche konvertieren. Der primäre Einstiegspunkt ist ListObjectCollection, zu erreichen über Worksheet.getListObjects().
Übersicht
Tabellen in einem Arbeitsblatt werden über das von Worksheet.getListObjects() zurückgegebene ListObjectCollection verwaltet. Jeder ListObject repräsentiert eine Excel-Tabelle und stellt ihren Anzeigenamen, Kommentar, Zellbereichsgrenzen, Spaltensammlung, Stil-Einstellungen sowie die Sichtbarkeit von Kopf-/Summenzeile bereit.
Eine neue Tabelle wird mit ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders) erstellt, das den nullbasierten Index der neu erstellten Tabelle zurückgibt. Eine alternative Überladung akzeptiert Zell-Namens-Strings: ListObjectCollection.add(startCellName, endCellName, hasHeaders).
Wichtige Klassen
| Klasse | Beschreibung |
|---|---|
ListObject | Stellt eine einzelne Excel-Tabelle dar. Gibt getDisplayName(), getComment(), Bereichskoordinaten, Spaltensammlung, Stiltyp und Sichtbarkeit der Kopf-/Summenzeile frei. |
ListObjectCollection | Sammlung aller Tabellen in einem Arbeitsblatt. Unterstützt getCount(), indizierte und benannte Suche über get(), add(), remove() sowie Hilfsfunktionen zur Stiltyp-Konvertierung. |
ListColumn | Stellt eine Spalte innerhalb einer Tabelle dar. Gibt Spalten-ID, Namen und Einstellungen für Berechnungen in der Summenzeile frei. |
ListColumnCollection | Geordnete Sammlung von Spalten in einer Tabelle. Durchlaufbar mit Zähler- und Index-Zugriff. |
TableStyleType | Enum, das einen integrierten Excel-Tabellenstil identifiziert (Light 1–21, Medium 1–28, Dark 1–11 oder Custom/None). |
TotalsCalculation | Enum für die Aggregationsfunktion in der Gesamtsummen-Zeile einer Tabelle (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, COUNT_NUMS, CUSTOM, NONE). |
Zugriff auf Tabellen in einem Arbeitsblatt
Rufen Sie das ListObjectCollection aus jedem Worksheet über Worksheet.getListObjects() ab. Verwenden Sie ListObjectCollection.getCount(), um zu bestimmen, wie viele Tabellen existieren. Auf einzelne Tabellen wird über den nullbasierten Index mittels ListObjectCollection.get(index) oder über den Anzeigenamen mittels ListObjectCollection.get(name) zugegriffen.
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());
}Erstellen einer neuen Tabelle
Verwenden Sie ListObjectCollection.add(), um eine Tabelle über einen Zellbereich einzufügen. Der hasHeaders-Parameter gibt an, ob die erste Zeile des Bereichs Spaltenüberschriften enthält.
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");Untersuchen von Tabelleneigenschaften
Sobald Sie eine ListObject-Referenz besitzen, können Sie lesen:
ListObject.getDisplayName()— die Anzeigenamen-Zeichenkette der Tabelle.ListObject.getComment()— ein optionaler Kommentar, der mit der Tabelle verknüpft ist.ListObject.getStartRow()/ListObject.getStartColumn()— obere linke Zelle des Tabellenbereichs.ListObject.getEndRow()/ListObject.getEndColumn()— untere rechte Zelle des Tabellenbereichs.ListObject.isShowHeaderRow()— ob die Kopfzeile sichtbar ist.ListObject.isShowTotals()— ob die Gesamtsummen-Zeile sichtbar ist.ListObject.getListColumns()— dasListColumnCollectionfür die Tabelle.
Tabellen formatieren
Wenden Sie einen integrierten Tabellenstil mit ListObject.setTableStyleType(TableStyleType) an. Das TableStyleType-Enum enthält Light (1–21), Medium (1–28) und Dark (1–11) Varianten sowie NONE und CUSTOM.
ListObject table = ws.getListObjects().get(0);
table.setTableStyleType(TableStyleType.TABLE_STYLE_MEDIUM_2);Zusätzliche Stil-Umschalter steuern gestreifte Zeilen, gestreifte Spalten und die Hervorhebung der ersten/letzten Spalte:
ListObject.setShowTableStyleRowStripes(boolean)ListObject.setShowTableStyleColumnStripes(boolean)ListObject.setShowTableStyleFirstColumn(boolean)ListObject.setShowTableStyleLastColumn(boolean)
Sie können auch einen benutzerdefinierten Stilnamen mit ListObject.setTableStyleName(String) festlegen.
Hilfsmethoden ListObjectCollection.parseTableStyleType(String) und ListObjectCollection.tableStyleTypeName(TableStyleType) konvertieren zwischen dem Enum und seiner String-Darstellung.
Arbeiten mit Tabellenspalten
Greifen Sie über ListObject.getListColumns() auf einzelne Spalten zu, das ein ListColumnCollection zurückgibt. Jeder ListColumn stellt bereit:
ListColumn.getId()— der einsbasierte OOXML-Spaltenidentifikator.ListColumn.getName()/ListColumn.setName(String)— der Spaltenkopftext.ListColumn.getTotalsCalculation()/ListColumn.setTotalsCalculation(TotalsCalculation)— die Aggregationsfunktion für die Gesamtsummen-Zeile.ListColumn.getTotalsRowLabel()/ListColumn.setTotalsRowLabel(String)— ein benutzerdefiniertes Label in der Gesamtsummen-Zeile.ListColumn.getTotalsRowFormula()/ListColumn.setTotalsRowFormula(String)— eine benutzerdefinierte Formel für die Gesamtsummen-Zeile.
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());
}Konfigurieren der Gesamtsummen-Zeile
Aktivieren Sie die Gesamtsummen-Zeile mit ListObject.setShowTotals(true), dann setzen Sie pro Spalte Aggregationsfunktionen mithilfe des TotalsCalculation-Enums.
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");Größenänderung und Konvertierung von Tabellen
Ändern Sie die Größe einer Tabelle, um einen anderen Zellbereich abzudecken, indem Sie ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders) verwenden.
Konvertieren Sie eine Tabelle mit ListObject.convertToRange() zurück in einen normalen Zellbereich. Dadurch wird die Tabellenstruktur entfernt, während die Zellendaten und -formatierung erhalten bleiben.
Entfernen Sie eine Tabelle vollständig aus der Sammlung mit ListObjectCollection.removeAt(index).
AutoFilter zu Tabellen
Spalten-Dropdown-Auto-Filter-Pfeile in einer Tabelle anzeigen oder entfernen:
ListObject.showAutoFilter()— Filterpfeile in der Kopfzeile anzeigen.ListObject.removeAutoFilter()— Filterpfeile ausblenden.
API Reference Zusammenfassung
ListObject
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
getDisplayName() | String | Anzeigename der Tabelle. |
setDisplayName(name) | void | Setzt den Anzeigenamen. |
getComment() | String | Optionaler Kommentar für die Tabelle. |
setComment(comment) | void | Setzt den Tabellenkommentar. |
getStartRow() | int | Startzeilenindex des Tabellenbereichs. |
getStartColumn() | int | Startspaltenindex des Tabellenbereichs. |
getEndRow() | int | Endzeilenindex des Tabellenbereichs. |
getEndColumn() | int | Endspaltenindex des Tabellenbereichs. |
isShowHeaderRow() | boolean | Ob die Kopfzeile sichtbar ist. |
setShowHeaderRow(show) | void | Zeigt die Kopfzeile an oder blendet sie aus. |
isShowTotals() | boolean | Ob die Gesamtsummen-Zeile sichtbar ist. |
setShowTotals(show) | void | Zeigt die Gesamtsummen-Zeile an oder blendet sie aus. |
getTableStyleType() | TableStyleType | Der eingebaute Tabellenstil. |
setTableStyleType(type) | void | Wendet einen integrierten Tabellenstil an. |
getTableStyleName() | String | Name des benutzerdefinierten Tabellenstils. |
setTableStyleName(name) | void | Legt einen benutzerdefinierten Tabellenstilnamen fest. |
getListColumns() | ListColumnCollection | Die Spaltensammlung der Tabelle. |
resize(...) | void | Ändert die Größe der Tabelle auf einen neuen Bereich. |
convertToRange() | void | Konvertiert die Tabelle in einen normalen Bereich. |
showAutoFilter() | void | Zeigt Auto-Filter-Pfeile an. |
removeAutoFilter() | void | Versteckt Auto-Filter-Pfeile. |
ListObjectCollection
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
getCount() | int | Anzahl der Tabellen im Arbeitsblatt. |
get(index) | ListObject | Gibt die Tabelle am angegebenen nullbasierten Index zurück. |
get(name) | ListObject | Gibt die Tabelle mit dem angegebenen Anzeigenamen zurück. |
add(startRow, startColumn, endRow, endColumn, hasHeaders) | int | Erstellt eine neue Tabelle; gibt ihren Index zurück. |
add(startCellName, endCellName, hasHeaders) | int | Erstellt eine neue Tabelle aus Zellnamen; gibt ihren Index zurück. |
removeAt(index) | void | Entfernt die Tabelle am angegebenen Index. |
parseTableStyleType(name) | TableStyleType | Konvertiert einen String in einen TableStyleType-Enum-Wert. |
tableStyleTypeName(type) | String | Konvertiert einen TableStyleType-Enum in seinen String-Namen. |
ListColumn
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
getId() | int | Eins-basierter OOXML-Spaltenbezeichner. |
getName() | String | Spaltenkopftext. |
setName(name) | void | Setzt den Spaltenkopftext. |
getTotalsCalculation() | TotalsCalculation | Aggregationsfunktion für die Gesamtsummen-Zeile. |
setTotalsCalculation(calc) | void | Legt die Aggregation der Gesamtsummenzeile fest. |
getTotalsRowLabel() | String | Benutzerdefinierte Beschriftung in der Summenzeile. |
setTotalsRowLabel(label) | void | Setzt das Label der Gesamtsummen-Zeile. |
getTotalsRowFormula() | String | Benutzerdefinierte Formel für die Summenzeile. |
setTotalsRowFormula(formula) | void | Setzt die Formel für die Gesamtsummen-Zeile. |
Einschränkungen
- Tabellendatenbindungen können nicht separat geändert werden; die Tabelle deckt den bei der Erstellung angegebenen Bereich ab. Verwenden Sie
resize(), um den abgedeckten Bereich anzupassen. - Benutzerdefinierte Tabellenstile müssen im Arbeitsbuch definiert werden, bevor sie über
setTableStyleName()namentlich referenziert werden.