Bekerja dengan Tabel

Bekerja dengan Tabel

Aspose.Cells FOSS for Java mendukung Excel tables (juga dikenal sebagai ListObjects atau structured references). Anda dapat membuat tabel baru dari rentang sel, memeriksa tabel yang ada, mengonfigurasi baris header dan total, menerapkan gaya tabel bawaan, mengakses kolom individual, dan mengonversi tabel kembali ke rentang biasa. Titik masuk utama adalah ListObjectCollection, diakses melalui Worksheet.getListObjects().


Gambaran Umum

Tabel pada lembar kerja dikelola melalui ListObjectCollection yang dikembalikan oleh Worksheet.getListObjects(). Setiap ListObject mewakili satu Excel table dan menampilkan nama tampilan, komentar, batas rentang sel, koleksi kolom, pengaturan gaya, serta visibilitas baris header/total.

Tabel baru dibuat dengan ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders), yang mengembalikan indeks berbasis nol dari tabel yang baru dibuat. Overload alternatif menerima string nama sel: ListObjectCollection.add(startCellName, endCellName, hasHeaders).


Kelas Kunci

KelasDeskripsi
ListObjectMewakili satu tabel Excel. Menyajikan getDisplayName(), getComment(), koordinat rentang, koleksi kolom, tipe gaya, serta visibilitas baris header/total.
ListObjectCollectionKoleksi semua tabel pada sebuah lembar kerja. Mendukung getCount(), pencarian indeks dan bernama melalui get(), add(), remove(), serta pembantu konversi tipe gaya.
ListColumnMewakili satu kolom dalam tabel. Menyajikan ID kolom, nama, dan pengaturan perhitungan baris total.
ListColumnCollectionKoleksi terurut kolom dalam tabel. Dapat diiterasi dengan akses hitungan dan indeks.
TableStyleTypeEnum yang mengidentifikasi gaya tabel Excel bawaan (Light 1–21, Medium 1–28, Dark 1–11, atau Custom/None).
TotalsCalculationEnum untuk fungsi agregasi pada baris total tabel (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, COUNT_NUMS, CUSTOM, NONE).

Mengakses Tabel pada Lembar Kerja

Dapatkan ListObjectCollection dari setiap Worksheet melalui Worksheet.getListObjects(). Gunakan ListObjectCollection.getCount() untuk menentukan berapa banyak tabel yang ada. Tabel individual diakses dengan indeks berbasis nol melalui ListObjectCollection.get(index) atau dengan nama tampilan melalui 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());
}

Membuat Tabel Baru

Gunakan ListObjectCollection.add() untuk menyisipkan tabel pada rentang sel. Parameter hasHeaders menunjukkan apakah baris pertama dari rentang berisi header kolom.

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

Memeriksa Properti Tabel

Setelah Anda memiliki referensi ListObject, Anda dapat membaca:

  • ListObject.getDisplayName() — string nama tampilan tabel.
  • ListObject.getComment() — komentar opsional yang terkait dengan tabel.
  • ListObject.getStartRow() / ListObject.getStartColumn() — sel kiri-atas dari rentang tabel.
  • ListObject.getEndRow() / ListObject.getEndColumn() — sel kanan-bawah dari rentang tabel.
  • ListObject.isShowHeaderRow() — apakah baris header terlihat.
  • ListObject.isShowTotals() — apakah baris total terlihat.
  • ListObject.getListColumns()ListColumnCollection untuk tabel.

Penggayaan Tabel

Terapkan gaya tabel bawaan menggunakan ListObject.setTableStyleType(TableStyleType). Enum TableStyleType mencakup varian Light (1–21), Medium (1–28), dan Dark (1–11) serta NONE dan CUSTOM.

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

Pengalih gaya tambahan mengontrol baris berpita, kolom berpita, dan penekanan kolom pertama/terakhir:

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

Anda juga dapat mengatur nama gaya khusus dengan ListObject.setTableStyleName(String).

Metode pembantu ListObjectCollection.parseTableStyleType(String) dan ListObjectCollection.tableStyleTypeName(TableStyleType) mengonversi antara enum dan representasi string-nya.


Bekerja dengan Kolom Tabel

Akses kolom individual melalui ListObject.getListColumns(), yang mengembalikan sebuah ListColumnCollection. Setiap ListColumn menyajikan:

  • ListColumn.getId() — pengidentifikasi kolom OOXML berbasis satu.
  • ListColumn.getName() / ListColumn.setName(String) — teks header kolom.
  • ListColumn.getTotalsCalculation() / ListColumn.setTotalsCalculation(TotalsCalculation) — fungsi agregasi untuk baris total.
  • ListColumn.getTotalsRowLabel() / ListColumn.setTotalsRowLabel(String) — label khusus di baris total.
  • ListColumn.getTotalsRowFormula() / ListColumn.setTotalsRowFormula(String) — rumus khusus untuk baris total.
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());
}

Mengonfigurasi Baris Total

Aktifkan baris total dengan ListObject.setShowTotals(true), lalu atur fungsi agregasi per kolom menggunakan enum 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");

Mengubah Ukuran dan Mengonversi Tabel

Ubah ukuran tabel untuk mencakup rentang sel yang berbeda menggunakan ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders).

Konversi tabel kembali menjadi rentang sel normal dengan ListObject.convertToRange(). Ini menghapus struktur tabel sambil mempertahankan data dan format sel.

Hapus tabel sepenuhnya dari koleksi dengan ListObjectCollection.removeAt(index).


AutoFilter pada Tabel

Tampilkan atau hapus panah filter otomatis drop-down kolom pada tabel:

  • ListObject.showAutoFilter() — tampilkan panah filter pada baris header.
  • ListObject.removeAutoFilter() — sembunyikan panah filter.

API Reference Ringkasan

ListObject

MetodeJenis pengembalianDeskripsi
getDisplayName()StringNama tampilan tabel.
setDisplayName(name)voidMengatur nama tampilan.
getComment()StringKomentar opsional untuk tabel.
setComment(comment)voidMengatur komentar tabel.
getStartRow()intIndeks baris mulai dari rentang tabel.
getStartColumn()intIndeks kolom mulai dari rentang tabel.
getEndRow()intIndeks baris akhir dari rentang tabel.
getEndColumn()intIndeks kolom akhir dari rentang tabel.
isShowHeaderRow()booleanApakah baris header terlihat.
setShowHeaderRow(show)voidMenampilkan atau menyembunyikan baris header.
isShowTotals()booleanApakah baris total terlihat.
setShowTotals(show)voidMenampilkan atau menyembunyikan baris total.
getTableStyleType()TableStyleTypeGaya tabel bawaan.
setTableStyleType(type)voidMenerapkan gaya tabel bawaan.
getTableStyleName()StringNama gaya tabel khusus.
setTableStyleName(name)voidMengatur nama gaya tabel khusus.
getListColumns()ListColumnCollectionKoleksi kolom tabel.
resize(...)voidMengubah ukuran tabel ke rentang baru.
convertToRange()voidMengonversi tabel menjadi rentang normal.
showAutoFilter()voidMenampilkan panah auto-filter.
removeAutoFilter()voidMenyembunyikan panah auto-filter.

ListObjectCollection

MetodeJenis pengembalianDeskripsi
getCount()intJumlah tabel pada lembar kerja.
get(index)ListObjectMengembalikan tabel pada indeks berbasis nol yang diberikan.
get(name)ListObjectMengembalikan tabel dengan nama tampilan yang diberikan.
add(startRow, startColumn, endRow, endColumn, hasHeaders)intMembuat tabel baru; mengembalikan indeksnya.
add(startCellName, endCellName, hasHeaders)intMembuat tabel baru dari nama sel; mengembalikan indeksnya.
removeAt(index)voidMenghapus tabel pada indeks yang diberikan.
parseTableStyleType(name)TableStyleTypeMengonversi string menjadi nilai enum TableStyleType.
tableStyleTypeName(type)StringMengonversi enum TableStyleType menjadi nama string-nya.

ListColumn

MetodeJenis pengembalianDeskripsi
getId()intPengidentifikasi kolom OOXML berbasis satu.
getName()StringTeks header kolom.
setName(name)voidMengatur teks header kolom.
getTotalsCalculation()TotalsCalculationFungsi agregasi baris total.
setTotalsCalculation(calc)voidMengatur agregasi baris total.
getTotalsRowLabel()StringLabel khusus di baris total.
setTotalsRowLabel(label)voidMenetapkan label baris total.
getTotalsRowFormula()StringFormula khusus untuk baris total.
setTotalsRowFormula(formula)voidMengatur formula baris total.

Batasan

  • Binding data tabel tidak dapat dimodifikasi secara terpisah; tabel mencakup rentang yang ditentukan pada saat pembuatan. Gunakan resize() untuk menyesuaikan rentang yang dicakup.
  • Gaya tabel khusus harus didefinisikan dalam buku kerja sebelum merujuknya dengan nama melalui setTableStyleName().

Lihat Juga

 Bahasa Indonesia