Bekerja dengan Tabel

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() dengan EndRow() yang cocok per baris dan EndTable() akhir – baris atau tabel yang tidak ditutup akan membuat keadaan internal builder (dan pohon dokumen yang dihasilkan) menjadi rusak.
  • Atur DocumentBuilder.CellFormat dan DocumentBuilder.RowFormat sebelum setiap pemanggilan InsertCell() atau EndRow() 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(), atau Cell.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, dan PreferredWidth.FromPoints() untuk lebar tata letak tetap.
  • AutoFitBehavior diterapkan ketika Anda memanggil Table.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

MasalahPenyebabPerbaiki
Tabel tampak rusak atau menghasilkan error saat disimpanBaris 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 tetapkanCellFormat / RowFormat diubah pada builder setelah sel-sel sudah dimasukkanAtur DocumentBuilder.CellFormat / RowFormat sebelum memanggil InsertCell() / EndRow() untuk konten tersebut
Tabel tidak mengubah ukuran seperti yang saya harapkan setelah penyuntinganAutoFit() mencerminkan keadaan tabel pada saat dipanggil, bukan secara terus-menerusPanggil Table.AutoFit(AutoFitBehavior) lagi setelah penyuntingan struktural
Sel-sel bersebelahan yang tampak digabung berperilaku sebagai sel terpisahSel hanya dicocokkan berdasarkan lebar, tidak ditandai dengan CellMergePanggil 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 / EnumDeskripsi
TableNode tabel; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth
RowNode baris tabel; Cells, RowFormat, EnsureMinimum()
CellNode sel tabel; CellFormat, EnsureMinimum()
TableCollection / RowCollection / CellCollectionKoleksi bertipe dari node Table / Row / Cell
CellFormatPemformatan per-sel: batas, bayangan, padding, status penggabungan, perataan vertikal
RowFormatPemformatan per-baris: batas, tinggi, perilaku pemisah halaman
PreferredWidth / PreferredWidthTypeNilai lebar tabel atau sel serta satuannya (auto, persen, poin)
AutoFitBehaviorCara Table.AutoFit() mengubah ukuran tabel dan sel-nya
CellMerge / CellVerticalAlignmentStatus penggabungan sel horizontal/vertikal dan perataan konten vertikal
TableAlignment / TableStyleOptions / TextWrappingPerataan seluruh tabel, penerapan gaya, dan perilaku pembungkus teks
DocumentBuilder.StartTable / InsertCell / EndRow / EndTableKonstruksi tabel berbasis kursor

Lihat Juga

 Bahasa Indonesia