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řída | Popis: |
|---|---|
ListObject | Representuje jednu tabulku Excel. Zpřístupňuje getDisplayName(), getComment(), souřadnice rozsahu, kolekci sloupců, typ stylu a viditelnost řádku záhlaví/účetních součtů. |
ListObjectCollection | Kolekce 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. |
ListColumn | Representuje jeden sloupec v tabulce. Zpřístupňuje ID sloupce, název a nastavení výpočtu řádku součtů. |
ListColumnCollection | Uspořádaná kolekce sloupců v tabulce. Iterovatelná s počtem a přístupem podle indexu. |
TableStyleType | Enum identifikující vestavěný styl tabulky Excel (Light 1–21, Medium 1–28, Dark 1–11 nebo Custom/None). |
TotalsCalculation | Enum 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()—ListColumnCollectionpro 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
| Metoda | Typ vrácení | Popis: |
|---|---|---|
getDisplayName() | String | Zobrazovaný název tabulky. |
setDisplayName(name) | void | Nastavuje zobrazovaný název. |
getComment() | String | Volitelný komentář k tabulce. |
setComment(comment) | void | Nastaví komentář tabulky. |
getStartRow() | int | Počáteční index řádku rozsahu tabulky. |
getStartColumn() | int | Počáteční index sloupce rozsahu tabulky. |
getEndRow() | int | Koncový index řádku rozsahu tabulky. |
getEndColumn() | int | Koncový index sloupce v rozsahu tabulky. |
isShowHeaderRow() | boolean | Zda je řádek záhlaví viditelný. |
setShowHeaderRow(show) | void | Zobrazí nebo skryje řádek záhlaví. |
isShowTotals() | boolean | Zda je řádek součtů viditelný. |
setShowTotals(show) | void | Zobrazí nebo skryje řádek součtů. |
getTableStyleType() | TableStyleType | Vestavěný styl tabulky. |
setTableStyleType(type) | void | Použije vestavěný styl tabulky. |
getTableStyleName() | String | Název vlastního stylu tabulky. |
setTableStyleName(name) | void | Nastaví vlastní název stylu tabulky. |
getListColumns() | ListColumnCollection | Kolekce sloupců tabulky. |
resize(...) | void | Změní velikost tabulky na nový rozsah. |
convertToRange() | void | Převede tabulku na běžný rozsah. |
showAutoFilter() | void | Zobrazuje šipky automatického filtru. |
removeAutoFilter() | void | Skrývá šipky automatického filtru. |
ListObjectCollection
| Metoda | Typ vrácení | Popis: |
|---|---|---|
getCount() | int | Počet tabulek v listu. |
get(index) | ListObject | Vrací tabulku na zadaném indexu počítaném od nuly. |
get(name) | ListObject | Vrátí tabulku s daným zobrazovacím názvem. |
add(startRow, startColumn, endRow, endColumn, hasHeaders) | int | Vytvoří novou tabulku; vrátí její index. |
add(startCellName, endCellName, hasHeaders) | int | Vytvoří novou tabulku ze jmen buněk; vrátí její index. |
removeAt(index) | void | Odstraní tabulku na zadaném indexu. |
parseTableStyleType(name) | TableStyleType | Převádí řetězec na výčtovou hodnotu TableStyleType. |
tableStyleTypeName(type) | String | Převádí výčtovou hodnotu TableStyleType na její řetězcový název. |
ListColumn
| Metoda | Typ vrácení | Popis: |
|---|---|---|
getId() | int | Identifikátor sloupce OOXML číslovaný od jedné. |
getName() | String | Text záhlaví sloupce. |
setName(name) | void | Nastaví text záhlaví sloupce. |
getTotalsCalculation() | TotalsCalculation | Funkce agregace řádku součtů. |
setTotalsCalculation(calc) | void | Nastavuje agregaci řádku součtů. |
getTotalsRowLabel() | String | Vlastní popisek v řádku součtů. |
setTotalsRowLabel(label) | void | Nastavuje popisek řádku součtů. |
getTotalsRowFormula() | String | Vlastní vzorec pro řádek součtů. |
setTotalsRowFormula(formula) | void | Nastaví 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().