Praca z tabelami
Praca z tabelami
Aspose.Cells FOSS dla Java obsługuje tabele Excel (znane również jako ListObjects lub odwołania strukturalne). Możesz tworzyć nowe tabele z zakresów komórek, przeglądać istniejące tabele, konfigurować wiersze nagłówka i sum, stosować wbudowane style tabel, uzyskiwać dostęp do poszczególnych kolumn oraz konwertować tabele z powrotem do zwykłych zakresów. Głównym punktem wejścia jest ListObjectCollection, dostępny przez Worksheet.getListObjects().
Przegląd
Tabele w arkuszu są zarządzane za pomocą ListObjectCollection zwracanego przez Worksheet.getListObjects(). Każdy ListObject reprezentuje jedną tabelę Excel i udostępnia jej nazwę wyświetlaną, komentarz, granice zakresu komórek, kolekcję kolumn, ustawienia stylu oraz widoczność wiersza nagłówka/sum.
Nowa tabela jest tworzona przy użyciu ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders), który zwraca indeks zerowy nowo utworzonej tabeli. Alternatywna przeciążona wersja przyjmuje ciągi nazw komórek: ListObjectCollection.add(startCellName, endCellName, hasHeaders).
Kluczowe klasy
| Klasa | Opis |
|---|---|
ListObject | Reprezentuje pojedynczą tabelę Excel. Udostępnia getDisplayName(), getComment(), współrzędne zakresu, kolekcję kolumn, typ stylu oraz widoczność wiersza nagłówka/wiersza sum. |
ListObjectCollection | Zbiór wszystkich tabel na arkuszu. Obsługuje getCount(), indeksowane i nazwane wyszukiwanie za pomocą get(), add(), remove() oraz pomocników konwersji typu stylu. |
ListColumn | Reprezentuje jedną kolumnę w tabeli. Udostępnia identyfikator kolumny, nazwę oraz ustawienia obliczeń wiersza sum. |
ListColumnCollection | Uporządkowana kolekcja kolumn w tabeli. Iterowalna, z dostępem do liczby elementów i indeksu. |
TableStyleType | Enum identyfikujący wbudowany styl tabeli Excel (Light 1–21, Medium 1–28, Dark 1–11 lub Custom/None). |
TotalsCalculation | Enum określający funkcję agregacji w wierszu sumarycznym tabeli (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, COUNT_NUMS, CUSTOM, NONE). |
Uzyskiwanie dostępu do tabel w arkuszu
Pobierz ListObjectCollection z dowolnego Worksheet za pomocą Worksheet.getListObjects(). Użyj ListObjectCollection.getCount(), aby określić, ile tabel istnieje. Poszczególne tabele są dostępne przez indeks zerowy za pomocą ListObjectCollection.get(index) lub przez nazwę wyświetlaną za pomocą 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());
}Tworzenie nowej tabeli
Użyj ListObjectCollection.add(), aby wstawić tabelę na zakres komórek. Parametr hasHeaders wskazuje, czy pierwszy wiersz zakresu zawiera nagłówki kolumn.
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");Sprawdzanie właściwości tabeli
Gdy posiadasz odniesienie ListObject, możesz odczytać:
ListObject.getDisplayName()— ciąg znaków wyświetlanej nazwy tabeli.ListObject.getComment()— opcjonalny komentarz powiązany z tabelą.ListObject.getStartRow()/ListObject.getStartColumn()— lewa górna komórka zakresu tabeli.ListObject.getEndRow()/ListObject.getEndColumn()— prawa dolna komórka zakresu tabeli.ListObject.isShowHeaderRow()— czy wiersz nagłówka jest widoczny.ListObject.isShowTotals()— czy wiersz sum jest widoczny.ListObject.getListColumns()—ListColumnCollectiondla tabeli.
Stylowanie tabel
Zastosuj wbudowany styl tabeli przy użyciu ListObject.setTableStyleType(TableStyleType). Wyliczenie TableStyleType zawiera warianty Light (1–21), Medium (1–28) i Dark (1–11) oraz NONE i CUSTOM.
ListObject table = ws.getListObjects().get(0);
table.setTableStyleType(TableStyleType.TABLE_STYLE_MEDIUM_2);Dodatkowe przełączniki stylu sterują paskowanymi wierszami, paskowanymi kolumnami oraz podkreśleniem pierwszej i ostatniej kolumny:
ListObject.setShowTableStyleRowStripes(boolean)ListObject.setShowTableStyleColumnStripes(boolean)ListObject.setShowTableStyleFirstColumn(boolean)ListObject.setShowTableStyleLastColumn(boolean)
Możesz także ustawić niestandardową nazwę stylu przy użyciu ListObject.setTableStyleName(String).
Metody pomocnicze ListObjectCollection.parseTableStyleType(String) i ListObjectCollection.tableStyleTypeName(TableStyleType) konwertują pomiędzy wyliczeniem a jego reprezentacją tekstową.
Praca z kolumnami tabeli
Uzyskaj dostęp do poszczególnych kolumn za pośrednictwem ListObject.getListColumns(), które zwraca ListColumnCollection. Każdy ListColumn udostępnia:
ListColumn.getId()— identyfikator kolumny OOXML liczony od 1.ListColumn.getName()/ListColumn.setName(String)— tekst nagłówka kolumny.ListColumn.getTotalsCalculation()/ListColumn.setTotalsCalculation(TotalsCalculation)— funkcja agregacji dla wiersza sum.ListColumn.getTotalsRowLabel()/ListColumn.setTotalsRowLabel(String)— niestandardowa etykieta w wierszu sum.ListColumn.getTotalsRowFormula()/ListColumn.setTotalsRowFormula(String)— niestandardowa formuła dla wiersza sum.
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());
}Konfigurowanie wiersza sum
Włącz wiersz sum przy użyciu ListObject.setShowTotals(true), a następnie ustaw funkcje agregacji dla poszczególnych kolumn, korzystając z wyliczenia 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");Zmiana rozmiaru i konwersja tabel
Zmień rozmiar tabeli, aby obejmowała inny zakres komórek, używając ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders).
Konwertuj tabelę z powrotem do zwykłego zakresu komórek przy użyciu ListObject.convertToRange(). Spowoduje to usunięcie struktury tabeli przy zachowaniu danych i formatowania komórek.
Usuń tabelę całkowicie z kolekcji za pomocą ListObjectCollection.removeAt(index).
AutoFilter w tabelach
Pokaż lub usuń strzałki automatycznego filtru rozwijanego w kolumnie w tabeli:
ListObject.showAutoFilter()— wyświetl strzałki filtru w wierszu nagłówka.ListObject.removeAutoFilter()— ukryj strzałki filtru.
API Reference Podsumowanie
ListObject
| Metoda | Typ zwracany | Opis |
|---|---|---|
getDisplayName() | String | Wyświetlana nazwa tabeli. |
setDisplayName(name) | void | Ustawia nazwę wyświetlaną. |
getComment() | String | Opcjonalny komentarz do tabeli. |
setComment(comment) | void | Ustawia komentarz tabeli. |
getStartRow() | int | Początkowy indeks wiersza zakresu tabeli. |
getStartColumn() | int | Początkowy indeks kolumny zakresu tabeli. |
getEndRow() | int | Końcowy indeks wiersza zakresu tabeli. |
getEndColumn() | int | Końcowy indeks kolumny zakresu tabeli. |
isShowHeaderRow() | boolean | Czy wiersz nagłówka jest widoczny. |
setShowHeaderRow(show) | void | Pokazuje lub ukrywa wiersz nagłówka. |
isShowTotals() | boolean | Czy wiersz sum jest widoczny. |
setShowTotals(show) | void | Wyświetla lub ukrywa wiersz sum. |
getTableStyleType() | TableStyleType | Wbudowany styl tabeli. |
setTableStyleType(type) | void | Zastosowuje wbudowany styl tabeli. |
getTableStyleName() | String | Nazwa własnego stylu tabeli. |
setTableStyleName(name) | void | Ustawia niestandardową nazwę stylu tabeli. |
getListColumns() | ListColumnCollection | Zbiór kolumn tabeli. |
resize(...) | void | Zmienia rozmiar tabeli do nowego zakresu. |
convertToRange() | void | Konwertuje tabelę do normalnego zakresu. |
showAutoFilter() | void | Wyświetla strzałki automatycznego filtrowania. |
removeAutoFilter() | void | Ukrywa strzałki automatycznego filtrowania. |
ListObjectCollection
| Metoda | Typ zwracany | Opis |
|---|---|---|
getCount() | int | Liczba tabel w arkuszu. |
get(index) | ListObject | Zwraca tabelę o podanym indeksie zerowym. |
get(name) | ListObject | Zwraca tabelę o podanej nazwie wyświetlanej. |
add(startRow, startColumn, endRow, endColumn, hasHeaders) | int | Tworzy nową tabelę; zwraca jej indeks. |
add(startCellName, endCellName, hasHeaders) | int | Tworzy nową tabelę na podstawie nazw komórek; zwraca jej indeks. |
removeAt(index) | void | Usuwa tabelę o podanym indeksie. |
parseTableStyleType(name) | TableStyleType | Konwertuje ciąg znaków na wartość wyliczeniową TableStyleType. |
tableStyleTypeName(type) | String | Konwertuje wyliczenie TableStyleType enum na jego nazwę jako ciąg znaków. |
ListColumn
| Metoda | Typ zwracany | Opis |
|---|---|---|
getId() | int | Jednoindeksowy identyfikator kolumny OOXML. |
getName() | String | Tekst nagłówka kolumny. |
setName(name) | void | Ustawia tekst nagłówka kolumny. |
getTotalsCalculation() | TotalsCalculation | Funkcja agregacji wiersza sumy. |
setTotalsCalculation(calc) | void | Ustawia agregację wiersza sumarycznego. |
getTotalsRowLabel() | String | Niestandardowa etykieta w wierszu sumy. |
setTotalsRowLabel(label) | void | Ustawia etykietę wiersza sumy. |
getTotalsRowFormula() | String | Niestandardowa formuła dla wiersza sum. |
setTotalsRowFormula(formula) | void | Ustawia formułę wiersza sumy. |
Ograniczenia
- Powiązania danych tabeli nie są modyfikowalne osobno; tabela obejmuje zakres określony w momencie tworzenia. Użyj
resize(), aby dostosować obejmowany zakres. - Niestandardowe style tabel muszą być zdefiniowane w skoroszycie przed odwołaniem się do nich po nazwie za pomocą
setTableStyleName().