Bekerja dengan Tabel
Bekerja dengan Tabel
Tabel dalam Aspose.Words FOSS untuk .NET diwakili oleh Aspose.Words.Tables namespace: Table, Row, dan Cell membentuk hierarki node komposit tiga tingkat yang berada di dalam pohon dokumen bersama paragraf. Halaman ini mencakup pembuatan tabel dengan DocumentBuilder, memformat baris dan sel, mengendalikan tata letak seluruh tabel, serta menggabungkan sel.
Model Objek Tabel
Sebuah Table adalah CompositeNode yang berisi node Row, dan setiap Row adalah CompositeNode yang berisi node Cell; sebuah Cell pada gilirannya berisi paragraf dan, kemungkinan, tabel bersarang. Table.Rows mengembalikan RowCollection, Row.Cells mengembalikan CellCollection, dan Body atau Story lainnya mengekspos setiap tabel tingkat atas di dalamnya melalui properti Tables, sebuah TableCollection. Ketiga koleksi tersebut mendukung Add(), Insert(), Remove(), RemoveAt(), Contains(), dan IndexOf(). Table.EnsureMinimum(), Row.EnsureMinimum(), dan Cell.EnsureMinimum() masing-masing mengisi konten valid terkecil yang dibutuhkan node tipe itu (sebuah baris kosong, sel kosong, atau paragraf kosong, masing-masing) setelah edit programatik meninggalkannya tanpa itu.
Membangun Tabel dengan DocumentBuilder
DocumentBuilder.StartTable() memulai tabel baru pada kursor, InsertCell() menambahkan sel ke baris saat ini, EndRow() menutup baris saat ini, dan EndTable() menutup tabel. Atur DocumentBuilder.CellFormat dan DocumentBuilder.RowFormat sebelum memanggil InsertCell() atau EndRow() untuk menerapkan pemformatan default pada sel dan baris saat dibuat — properti ini berfungsi sebagai templat untuk konten yang akan dimasukkan pembuat selanjutnya, bukan perubahan retroaktif pada sel yang sudah ada dalam dokumen.
Pemformatan Sel dan Baris
Cell.CellFormat adalah sebuah instance CellFormat (Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, LeftPadding, RightPadding, TopPadding, BottomPadding, HideMark, Orientation) dengan ClearFormatting() untuk meresetnya dan SetPaddings() untuk mengatur keempat padding sel sekaligus. Row.RowFormat adalah sebuah instance RowFormat (Borders, Height, HeightRule, AllowBreakAcrossPages, HeadingFormat) dengan ClearFormatting() miliknya sendiri.
Pemformatan Seluruh Tabel dan AutoFit
Table sendiri mengekspos properti tata letak – Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions), TextWrapping, dan metadata aksesibilitas melalui Title dan Description. Table.AutoFit(AutoFitBehavior) mengubah ukuran tabel dan sel-selnya sesuai perilaku yang diberikan. SetBorder() mengatur satu sisi border dan SetBorders() mengatur semua border menjadi gaya garis, lebar, dan warna yang sama di seluruh tabel; ClearBorders() dan ClearShading() meresetnya. ConvertToHorizontallyMergedCells() mengubah sel yang digabungkan dengan lebar yang cocok menjadi sel yang secara eksplisit ditandai dengan HorizontalMerge.
Lebar Pilihan dan Lebar Sel
PreferredWidth mewakili sebuah lebar dan satuannya, dibuat dengan metode pabrik statis PreferredWidth.FromPercent() atau PreferredWidth.FromPoints(); PreferredWidthType mengidentifikasi jenis nilai (Auto, Percent, atau Points) yang dimiliki oleh PreferredWidth tertentu. Baik Table.PreferredWidth maupun CellFormat.PreferredWidth menerima nilai-nilai ini.
Sel yang Digabungkan
CellFormat.HorizontalMerge dan CellFormat.VerticalMerge (CellMerge) menandai bagaimana sebuah sel berpartisipasi dalam penggabungan horizontal atau vertikal dengan tetangganya. CellVerticalAlignment mengontrol bagaimana konten diratakan secara vertikal dalam sebuah sel, terlepas dari keadaan penggabungan apapun.
Tips dan Praktik Terbaik
- Tutup setiap
StartTable()denganEndRow()yang cocok per baris danEndTable()akhir – baris atau tabel yang tidak ditutup akan membuat keadaan internal builder (dan pohon dokumen yang dihasilkan) menjadi rusak. - Atur
DocumentBuilder.CellFormatdanDocumentBuilder.RowFormatsebelum setiap pemanggilanInsertCell()atauEndRow()jika baris atau sel yang berbeda dalam tabel yang sama memerlukan format yang berbeda; builder akan menerapkan apa pun yang sedang diatur pada saat penyisipan. - Panggil
Table.EnsureMinimum(),Row.EnsureMinimum(), atauCell.EnsureMinimum()setelah menghapus konten secara programatik sehingga node mempertahankan struktur minimum yang valid yang diharapkan Word. - Gunakan
PreferredWidth.FromPercent()untuk tabel yang harus menyesuaikan lebar halaman yang tersedia, danPreferredWidth.FromPoints()untuk lebar tata letak tetap. AutoFitBehaviorditerapkan ketika Anda memanggilTable.AutoFit()– ia tidak dijalankan secara terus-menerus saat Anda menambah atau menghapus konten, jadi panggil kembali setelah penyuntingan signifikan jika Anda memerlukan tabel disesuaikan kembali.
Masalah Umum
| Masalah | Penyebab | Perbaiki |
|---|---|---|
| Tabel tampak rusak atau menghasilkan error saat disimpan | Baris atau tabel tidak pernah ditutup dengan EndRow() / EndTable() | Selalu pasangkan StartTable() dengan EndTable() akhir, dan tutup setiap baris dengan EndRow() |
| Sel baru tidak mengambil format yang saya tetapkan | CellFormat / RowFormat diubah pada builder setelah sel-sel sudah dimasukkan | Atur DocumentBuilder.CellFormat / RowFormat sebelum memanggil InsertCell() / EndRow() untuk konten tersebut |
| Tabel tidak mengubah ukuran seperti yang saya harapkan setelah penyuntingan | AutoFit() mencerminkan keadaan tabel pada saat dipanggil, bukan secara terus-menerus | Panggil Table.AutoFit(AutoFitBehavior) lagi setelah penyuntingan struktural |
| Sel-sel bersebelahan yang tampak digabung berperilaku sebagai sel terpisah | Sel hanya dicocokkan berdasarkan lebar, tidak ditandai dengan CellMerge | Panggil Table.ConvertToHorizontallyMergedCells(), atau atur CellFormat.HorizontalMerge / VerticalMerge secara eksplisit |
FAQ
Bagaimana cara membuat tabel dari awal dengan DocumentBuilder?
Panggil StartTable(), kemudian InsertCell() untuk setiap sel dalam baris, EndRow() untuk menutup baris, ulangi untuk baris tambahan, dan akhirnya EndTable() untuk menutup tabel.
Bagaimana cara mengatur lebar tabel berbasis persentase alih-alih lebar tetap?
Tetapkan Table.PreferredWidth = PreferredWidth.FromPercent(value) alih-alih PreferredWidth.FromPoints(value).
Bagaimana cara mengatur ulang semua pemformatan pada sel atau baris?
Panggil CellFormat.ClearFormatting() pada CellFormat sel, atau RowFormat.ClearFormatting() pada RowFormat baris.
Bagaimana cara mengatur batas dan bayangan untuk seluruh tabel sekaligus?
Gunakan Table.SetBorders() untuk batas seragam pada setiap sisi, Table.SetBorder() untuk satu sisi pada satu waktu, dan Table.SetShading() untuk bayangan seragam; ClearBorders() dan ClearShading() mengatur ulangnya.
API Reference Ringkasan
| Kelas / Enum | Deskripsi |
|---|---|
Table | Node tabel; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth |
Row | Node baris tabel; Cells, RowFormat, EnsureMinimum() |
Cell | Node sel tabel; CellFormat, EnsureMinimum() |
TableCollection / RowCollection / CellCollection | Koleksi bertipe dari node Table / Row / Cell |
CellFormat | Pemformatan per-sel: batas, bayangan, padding, status penggabungan, perataan vertikal |
RowFormat | Pemformatan per-baris: batas, tinggi, perilaku pemisah halaman |
PreferredWidth / PreferredWidthType | Nilai lebar tabel atau sel serta satuannya (auto, persen, poin) |
AutoFitBehavior | Cara Table.AutoFit() mengubah ukuran tabel dan sel-nya |
CellMerge / CellVerticalAlignment | Status penggabungan sel horizontal/vertikal dan perataan konten vertikal |
TableAlignment / TableStyleOptions / TextWrapping | Perataan seluruh tabel, penerapan gaya, dan perilaku pembungkus teks |
DocumentBuilder.StartTable / InsertCell / EndRow / EndTable | Konstruksi tabel berbasis kursor |