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
| Kelas | Deskripsi |
|---|---|
ListObject | Mewakili satu tabel Excel. Menyajikan getDisplayName(), getComment(), koordinat rentang, koleksi kolom, tipe gaya, serta visibilitas baris header/total. |
ListObjectCollection | Koleksi semua tabel pada sebuah lembar kerja. Mendukung getCount(), pencarian indeks dan bernama melalui get(), add(), remove(), serta pembantu konversi tipe gaya. |
ListColumn | Mewakili satu kolom dalam tabel. Menyajikan ID kolom, nama, dan pengaturan perhitungan baris total. |
ListColumnCollection | Koleksi terurut kolom dalam tabel. Dapat diiterasi dengan akses hitungan dan indeks. |
TableStyleType | Enum yang mengidentifikasi gaya tabel Excel bawaan (Light 1–21, Medium 1–28, Dark 1–11, atau Custom/None). |
TotalsCalculation | Enum 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()—ListColumnCollectionuntuk 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
| Metode | Jenis pengembalian | Deskripsi |
|---|---|---|
getDisplayName() | String | Nama tampilan tabel. |
setDisplayName(name) | void | Mengatur nama tampilan. |
getComment() | String | Komentar opsional untuk tabel. |
setComment(comment) | void | Mengatur komentar tabel. |
getStartRow() | int | Indeks baris mulai dari rentang tabel. |
getStartColumn() | int | Indeks kolom mulai dari rentang tabel. |
getEndRow() | int | Indeks baris akhir dari rentang tabel. |
getEndColumn() | int | Indeks kolom akhir dari rentang tabel. |
isShowHeaderRow() | boolean | Apakah baris header terlihat. |
setShowHeaderRow(show) | void | Menampilkan atau menyembunyikan baris header. |
isShowTotals() | boolean | Apakah baris total terlihat. |
setShowTotals(show) | void | Menampilkan atau menyembunyikan baris total. |
getTableStyleType() | TableStyleType | Gaya tabel bawaan. |
setTableStyleType(type) | void | Menerapkan gaya tabel bawaan. |
getTableStyleName() | String | Nama gaya tabel khusus. |
setTableStyleName(name) | void | Mengatur nama gaya tabel khusus. |
getListColumns() | ListColumnCollection | Koleksi kolom tabel. |
resize(...) | void | Mengubah ukuran tabel ke rentang baru. |
convertToRange() | void | Mengonversi tabel menjadi rentang normal. |
showAutoFilter() | void | Menampilkan panah auto-filter. |
removeAutoFilter() | void | Menyembunyikan panah auto-filter. |
ListObjectCollection
| Metode | Jenis pengembalian | Deskripsi |
|---|---|---|
getCount() | int | Jumlah tabel pada lembar kerja. |
get(index) | ListObject | Mengembalikan tabel pada indeks berbasis nol yang diberikan. |
get(name) | ListObject | Mengembalikan tabel dengan nama tampilan yang diberikan. |
add(startRow, startColumn, endRow, endColumn, hasHeaders) | int | Membuat tabel baru; mengembalikan indeksnya. |
add(startCellName, endCellName, hasHeaders) | int | Membuat tabel baru dari nama sel; mengembalikan indeksnya. |
removeAt(index) | void | Menghapus tabel pada indeks yang diberikan. |
parseTableStyleType(name) | TableStyleType | Mengonversi string menjadi nilai enum TableStyleType. |
tableStyleTypeName(type) | String | Mengonversi enum TableStyleType menjadi nama string-nya. |
ListColumn
| Metode | Jenis pengembalian | Deskripsi |
|---|---|---|
getId() | int | Pengidentifikasi kolom OOXML berbasis satu. |
getName() | String | Teks header kolom. |
setName(name) | void | Mengatur teks header kolom. |
getTotalsCalculation() | TotalsCalculation | Fungsi agregasi baris total. |
setTotalsCalculation(calc) | void | Mengatur agregasi baris total. |
getTotalsRowLabel() | String | Label khusus di baris total. |
setTotalsRowLabel(label) | void | Menetapkan label baris total. |
getTotalsRowFormula() | String | Formula khusus untuk baris total. |
setTotalsRowFormula(formula) | void | Mengatur 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().