Práce s tabulkami

Práce s tabulkami

Aspose.Cells FOSS pro Java podporuje Excel tabulky (také známé jako ListObjects nebo strukturované odkazy). Můžete vytvářet nové tabulky z rozsahů buněk, prohlížet existující tabulky, konfigurovat řádky záhlaví a součtů, použít vestavěné styly tabulek, přistupovat k jednotlivým sloupcům a převádět tabulky zpět na běžné rozsahy. Hlavní vstupní bod je ListObjectCollection, přístupný přes Worksheet.getListObjects().


Přehled

Tabulky na listu jsou spravovány pomocí ListObjectCollection vráceného Worksheet.getListObjects(). Každý ListObject představuje jednu Excel tabulku a zpřístupňuje její zobrazovaný název, komentář, hranice rozsahu buněk, kolekci sloupců, nastavení stylu a viditelnost řádku záhlaví/součtů.

Nová tabulka je vytvořena pomocí ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders), který vrací nulový index nově vytvořené tabulky. Alternativní přetížení přijímá řetězce názvů buněk: ListObjectCollection.add(startCellName, endCellName, hasHeaders).


Klíčové třídy

TřídaPopis:
ListObjectRepresentuje jednu tabulku Excel. Zpřístupňuje getDisplayName(), getComment(), souřadnice rozsahu, kolekci sloupců, typ stylu a viditelnost řádku záhlaví/účetních součtů.
ListObjectCollectionKolekce všech tabulek v listu. Podporuje getCount(), indexované a pojmenované vyhledávání pomocí get(), add(), remove() a pomocníků pro převod typu stylu.
ListColumnRepresentuje jeden sloupec v tabulce. Zpřístupňuje ID sloupce, název a nastavení výpočtu řádku součtů.
ListColumnCollectionUspořádaná kolekce sloupců v tabulce. Iterovatelná s počtem a přístupem podle indexu.
TableStyleTypeEnum identifikující vestavěný styl tabulky Excel (Light 1–21, Medium 1–28, Dark 1–11 nebo Custom/None).
TotalsCalculationEnum pro agregační funkci na řádku součtů tabulky (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, COUNT_NUMS, CUSTOM, NONE).

Přístup k tabulkám na listu

Získejte ListObjectCollection z libovolného Worksheet pomocí Worksheet.getListObjects(). Použijte ListObjectCollection.getCount() k určení počtu existujících tabulek. Jednotlivé tabulky jsou přístupné pomocí nulového indexu přes ListObjectCollection.get(index) nebo podle zobrazovaného názvu přes 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());
}

Vytvoření nové tabulky

Použijte ListObjectCollection.add() k vložení tabulky přes oblast buněk. Parametr hasHeaders určuje, zda první řádek oblasti obsahuje záhlaví sloupců.

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");

Prohlížení vlastností tabulky

Jakmile máte referenci ListObject, můžete číst:

  • ListObject.getDisplayName() — řetězec zobrazovaného názvu tabulky.
  • ListObject.getComment() — volitelný komentář spojený s tabulkou.
  • ListObject.getStartRow() / ListObject.getStartColumn() — buňka v levém horním rohu oblasti tabulky.
  • ListObject.getEndRow() / ListObject.getEndColumn() — buňka v pravém dolním rohu oblasti tabulky.
  • ListObject.isShowHeaderRow() — zda je řádek záhlaví viditelný.
  • ListObject.isShowTotals() — zda je řádek součtů viditelný.
  • ListObject.getListColumns()ListColumnCollection pro tabulku.

Styling tabulek

Použijte vestavěný styl tabulky pomocí ListObject.setTableStyleType(TableStyleType). Enum TableStyleType zahrnuje varianty Light (1–21), Medium (1–28) a Dark (1–11) plus NONE a CUSTOM.

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

Další přepínače stylu ovládají proužkované řádky, proužkované sloupce a zvýraznění prvního/posledního sloupce:

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

Můžete také nastavit vlastní název stylu pomocí ListObject.setTableStyleName(String).

Pomocné metody ListObjectCollection.parseTableStyleType(String) a ListObjectCollection.tableStyleTypeName(TableStyleType) převádějí mezi výčtem a jeho řetězcovou reprezentací.


Práce s sloupci tabulky

Přistupujte k jednotlivým sloupcům pomocí ListObject.getListColumns(), který vrací ListColumnCollection. Každý ListColumn poskytuje:

  • ListColumn.getId() — identifikátor sloupce OOXML číslovaný od jedné.
  • ListColumn.getName() / ListColumn.setName(String) — text záhlaví sloupce.
  • ListColumn.getTotalsCalculation() / ListColumn.setTotalsCalculation(TotalsCalculation) — agregační funkce pro řádek součtů.
  • ListColumn.getTotalsRowLabel() / ListColumn.setTotalsRowLabel(String) — vlastní štítek v řádku součtů.
  • ListColumn.getTotalsRowFormula() / ListColumn.setTotalsRowFormula(String) — vlastní vzorec pro řádek součtů.
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());
}

Nastavení řádku součtů

Povolte řádek součtů pomocí ListObject.setShowTotals(true), a poté nastavte agregační funkce pro jednotlivé sloupce pomocí výčtu 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");

Změna velikosti a převod tabulek

Změňte velikost tabulky tak, aby pokrývala jiný rozsah buněk pomocí ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders).

Převeďte tabulku zpět na běžný rozsah buněk pomocí ListObject.convertToRange(). Tím se odstraní struktura tabulky při zachování dat a formátování buněk.

Odstraňte tabulku zcela ze sbírky pomocí ListObjectCollection.removeAt(index).


AutoFilter na tabulkách

Zobrazit nebo odstranit rozbalovací šipky automatického filtru ve sloupci tabulky:

  • ListObject.showAutoFilter() — zobrazit šipky filtru v řádku záhlaví.
  • ListObject.removeAutoFilter() — skrýt šipky filtru.

API Reference Souhrn

ListObject

MetodaTyp vráceníPopis:
getDisplayName()StringZobrazovaný název tabulky.
setDisplayName(name)voidNastavuje zobrazovaný název.
getComment()StringVolitelný komentář k tabulce.
setComment(comment)voidNastaví komentář tabulky.
getStartRow()intPočáteční index řádku rozsahu tabulky.
getStartColumn()intPočáteční index sloupce rozsahu tabulky.
getEndRow()intKoncový index řádku rozsahu tabulky.
getEndColumn()intKoncový index sloupce v rozsahu tabulky.
isShowHeaderRow()booleanZda je řádek záhlaví viditelný.
setShowHeaderRow(show)voidZobrazí nebo skryje řádek záhlaví.
isShowTotals()booleanZda je řádek součtů viditelný.
setShowTotals(show)voidZobrazí nebo skryje řádek součtů.
getTableStyleType()TableStyleTypeVestavěný styl tabulky.
setTableStyleType(type)voidPoužije vestavěný styl tabulky.
getTableStyleName()StringNázev vlastního stylu tabulky.
setTableStyleName(name)voidNastaví vlastní název stylu tabulky.
getListColumns()ListColumnCollectionKolekce sloupců tabulky.
resize(...)voidZmění velikost tabulky na nový rozsah.
convertToRange()voidPřevede tabulku na běžný rozsah.
showAutoFilter()voidZobrazuje šipky automatického filtru.
removeAutoFilter()voidSkrývá šipky automatického filtru.

ListObjectCollection

MetodaTyp vráceníPopis:
getCount()intPočet tabulek v listu.
get(index)ListObjectVrací tabulku na zadaném indexu počítaném od nuly.
get(name)ListObjectVrátí tabulku s daným zobrazovacím názvem.
add(startRow, startColumn, endRow, endColumn, hasHeaders)intVytvoří novou tabulku; vrátí její index.
add(startCellName, endCellName, hasHeaders)intVytvoří novou tabulku ze jmen buněk; vrátí její index.
removeAt(index)voidOdstraní tabulku na zadaném indexu.
parseTableStyleType(name)TableStyleTypePřevádí řetězec na výčtovou hodnotu TableStyleType.
tableStyleTypeName(type)StringPřevádí výčtovou hodnotu TableStyleType na její řetězcový název.

ListColumn

MetodaTyp vráceníPopis:
getId()intIdentifikátor sloupce OOXML číslovaný od jedné.
getName()StringText záhlaví sloupce.
setName(name)voidNastaví text záhlaví sloupce.
getTotalsCalculation()TotalsCalculationFunkce agregace řádku součtů.
setTotalsCalculation(calc)voidNastavuje agregaci řádku součtů.
getTotalsRowLabel()StringVlastní popisek v řádku součtů.
setTotalsRowLabel(label)voidNastavuje popisek řádku součtů.
getTotalsRowFormula()StringVlastní vzorec pro řádek součtů.
setTotalsRowFormula(formula)voidNastaví vzorec řádku součtů.

Omezení

  • Vazby dat tabulky nejsou samostatně upravitelné; tabulka zahrnuje rozsah určený při vytvoření. Použijte resize() k úpravě zahrnutého rozsahu.
  • Vlastní styly tabulky musí být definovány v sešitu před tím, než na ně odkazujete podle názvu pomocí setTableStyleName().

Viz také:

 Čeština