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

KlasseBeschreibung
ListObjectStellt eine einzelne Excel-Tabelle dar. Gibt getDisplayName(), getComment(), Bereichskoordinaten, Spaltensammlung, Stiltyp und Sichtbarkeit der Kopf-/Summenzeile frei.
ListObjectCollectionSammlung aller Tabellen in einem Arbeitsblatt. Unterstützt getCount(), indizierte und benannte Suche über get(), add(), remove() sowie Hilfsfunktionen zur Stiltyp-Konvertierung.
ListColumnStellt eine Spalte innerhalb einer Tabelle dar. Gibt Spalten-ID, Namen und Einstellungen für Berechnungen in der Summenzeile frei.
ListColumnCollectionGeordnete Sammlung von Spalten in einer Tabelle. Durchlaufbar mit Zähler- und Index-Zugriff.
TableStyleTypeEnum, das einen integrierten Excel-Tabellenstil identifiziert (Light 1–21, Medium 1–28, Dark 1–11 oder Custom/None).
TotalsCalculationEnum 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() — das ListColumnCollection fü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

MethodeRückgabetypBeschreibung
getDisplayName()StringAnzeigename der Tabelle.
setDisplayName(name)voidSetzt den Anzeigenamen.
getComment()StringOptionaler Kommentar für die Tabelle.
setComment(comment)voidSetzt den Tabellenkommentar.
getStartRow()intStartzeilenindex des Tabellenbereichs.
getStartColumn()intStartspaltenindex des Tabellenbereichs.
getEndRow()intEndzeilenindex des Tabellenbereichs.
getEndColumn()intEndspaltenindex des Tabellenbereichs.
isShowHeaderRow()booleanOb die Kopfzeile sichtbar ist.
setShowHeaderRow(show)voidZeigt die Kopfzeile an oder blendet sie aus.
isShowTotals()booleanOb die Gesamtsummen-Zeile sichtbar ist.
setShowTotals(show)voidZeigt die Gesamtsummen-Zeile an oder blendet sie aus.
getTableStyleType()TableStyleTypeDer eingebaute Tabellenstil.
setTableStyleType(type)voidWendet einen integrierten Tabellenstil an.
getTableStyleName()StringName des benutzerdefinierten Tabellenstils.
setTableStyleName(name)voidLegt einen benutzerdefinierten Tabellenstilnamen fest.
getListColumns()ListColumnCollectionDie Spaltensammlung der Tabelle.
resize(...)voidÄndert die Größe der Tabelle auf einen neuen Bereich.
convertToRange()voidKonvertiert die Tabelle in einen normalen Bereich.
showAutoFilter()voidZeigt Auto-Filter-Pfeile an.
removeAutoFilter()voidVersteckt Auto-Filter-Pfeile.

ListObjectCollection

MethodeRückgabetypBeschreibung
getCount()intAnzahl der Tabellen im Arbeitsblatt.
get(index)ListObjectGibt die Tabelle am angegebenen nullbasierten Index zurück.
get(name)ListObjectGibt die Tabelle mit dem angegebenen Anzeigenamen zurück.
add(startRow, startColumn, endRow, endColumn, hasHeaders)intErstellt eine neue Tabelle; gibt ihren Index zurück.
add(startCellName, endCellName, hasHeaders)intErstellt eine neue Tabelle aus Zellnamen; gibt ihren Index zurück.
removeAt(index)voidEntfernt die Tabelle am angegebenen Index.
parseTableStyleType(name)TableStyleTypeKonvertiert einen String in einen TableStyleType-Enum-Wert.
tableStyleTypeName(type)StringKonvertiert einen TableStyleType-Enum in seinen String-Namen.

ListColumn

MethodeRückgabetypBeschreibung
getId()intEins-basierter OOXML-Spaltenbezeichner.
getName()StringSpaltenkopftext.
setName(name)voidSetzt den Spaltenkopftext.
getTotalsCalculation()TotalsCalculationAggregationsfunktion für die Gesamtsummen-Zeile.
setTotalsCalculation(calc)voidLegt die Aggregation der Gesamtsummenzeile fest.
getTotalsRowLabel()StringBenutzerdefinierte Beschriftung in der Summenzeile.
setTotalsRowLabel(label)voidSetzt das Label der Gesamtsummen-Zeile.
getTotalsRowFormula()StringBenutzerdefinierte Formel für die Summenzeile.
setTotalsRowFormula(formula)voidSetzt 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.

Siehe auch

 Deutsch