Tablolarla Çalışma
Tablolarla Çalışma
Tablolar Aspose.Words FOSS için .NET tarafından temsil edilir Aspose.Words.Tables ad alanı: Table, Row, ve Cell belirli bir üç seviyeli birleşik düğüm hiyerarşisi oluşturur ve belge ağacında paragrafların yanında bulunur. Bu sayfa, tabloları oluşturmayı kullanarak DocumentBuilder, satırları ve hücreleri biçimlendirme, tablo genelindeki düzeni kontrol etme ve hücreleri birleştirme.
Tablo Nesne Modeli
Bir Table, Row düğümlerini içeren bir CompositeNode’dir ve her Row, Cell düğümlerini içeren bir CompositeNode’tir; bir Cell ise paragrafları ve potansiyel olarak iç içe tabloları içerir. Table.Rows bir RowCollection döndürür, Row.Cells bir CellCollection döndürür ve bir Body ya da başka bir Story, Tables özelliği aracılığıyla içindeki her üst düzey tabloyu, bir TableCollection olarak ortaya çıkarır. Bu üç koleksiyon Add(), Insert(), Remove(), RemoveAt(), Contains() ve IndexOf() destekler. Table.EnsureMinimum(), Row.EnsureMinimum() ve Cell.EnsureMinimum(), programatik düzenlemeler birini eksik bıraktıktan sonra o tipteki bir düğümün ihtiyacı olan en küçük geçerli içeriği (sırasıyla boş bir satır, boş bir hücre veya boş bir paragraf) doldurur.
Tabloları DocumentBuilder ile Oluşturma
DocumentBuilder.StartTable(), imleçte yeni bir tablo başlatır, InsertCell() geçerli satıra bir hücre ekler, EndRow() geçerli satırı kapatır ve EndTable() tabloyu kapatır. InsertCell() veya EndRow() çağrılmadan önce DocumentBuilder.CellFormat ve DocumentBuilder.RowFormat ayarlanarak hücre ve satırlara oluşturulurken varsayılan biçimlendirme uygulanır — bu özellikler, oluşturucunun sonraki ekleyeceği içerik için bir şablon görevi görür, belgede zaten bulunan hücrelere geriye dönük bir değişiklik değildir.
Hücre ve Satır Biçimlendirme
Cell.CellFormat, CellFormat bir örneğidir (Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, LeftPadding, RightPadding, TopPadding, BottomPadding, HideMark, Orientation) ve ClearFormatting() ile sıfırlanabilir, SetPaddings() ise dört hücre dolgusu bir anda ayarlanabilir. Row.RowFormat, RowFormat bir örneğidir (Borders, Height, HeightRule, AllowBreakAcrossPages, HeadingFormat) ve kendine özgü ClearFormatting() içerir.
Tablo Genelinde Biçimlendirme ve AutoFit
Table kendisi, yerleşim özelliklerini ortaya koyar – Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions), TextWrapping, ve erişilebilirlik meta verilerini Title ve Description aracılığıyla sağlar. Table.AutoFit(AutoFitBehavior), tabloyu ve hücrelerini verilen davranışa göre yeniden boyutlandırır. SetBorder(), bir kenar tarafını ayarlar ve SetBorders(), tüm tablo boyunca aynı çizgi stili, kalınlığı ve rengiyle her kenarı ayarlar; ClearBorders() ve ClearShading() ise bunları sıfırlar. ConvertToHorizontallyMergedCells(), genişliği eşleşen birleştirilmiş hücreleri, HorizontalMerge ile açıkça işaretlenmiş hücrelere dönüştürür.
Tercih Edilen ve Hücre Genişlikleri
PreferredWidth, bir genişliği ve birimini temsil eder, PreferredWidth.FromPercent() veya PreferredWidth.FromPoints() statik fabrika metodlarıyla oluşturulur; PreferredWidthType, verilen bir PreferredWidth‘nin hangi tür değeri (Auto, Percent veya Points) tuttuğunu belirler. Table.PreferredWidth ve CellFormat.PreferredWidth her ikisi de bu değerleri kabul eder.
Birleştirilmiş Hücreler
CellFormat.HorizontalMerge ve CellFormat.VerticalMerge (CellMerge), bir hücrenin komşularıyla yatay veya dikey birleştirmeye nasıl katıldığını işaret eder. CellVerticalAlignment, birleştirme durumundan bağımsız olarak içeriğin hücre içinde dikey olarak nasıl hizalanacağını kontrol eder.
İpuçları ve En İyi Uygulamalar
- Her
StartTable()‘ı satır başına eşleşen birEndRow()ve son birEndTable()ile kapatın – kapatılmamış bir satır veya tablo, oluşturucunun iç durumunu (ve ortaya çıkan belge ağacını) bozuk bırakır. - Aynı tablodaki farklı satırlar veya hücreler farklı biçimlendirme gerektiriyorsa, her
InsertCell()veyaEndRow()çağrısından önceDocumentBuilder.CellFormatveDocumentBuilder.RowFormatayarlayın; oluşturucu, ekleme anında o anda ayarlanmış olanı uygular. - İçeriği programlı olarak kaldırdıktan sonra
Table.EnsureMinimum(),Row.EnsureMinimum()veyaCell.EnsureMinimum()‘yi çağırın, böylece düğüm Word’ün beklediği minimum geçerli yapıyı korur. - Mevcut sayfa genişliğine uyum sağlaması gereken tablolar için
PreferredWidth.FromPercent()kullanın ve sabit bir düzen genişliği içinPreferredWidth.FromPoints()kullanın. AutoFitBehavior,Table.AutoFit()‘i çağırdığınızda uygulanır – içerik ekledikçe veya çıkardıkça sürekli olarak yeniden çalışmaz, bu yüzden tabloyu yeniden yeniden boyutlandırmanız gerekiyorsa önemli düzenlemelerden sonra tekrar çağırın.
Yaygın Sorunlar
| Sorun | Neden | Düzelt |
|---|---|---|
| Tablo bozulmuş görünüyor veya kaydedildiğinde hata veriyor | Bir satır ya da tablo EndRow() / EndTable() ile hiç kapatılmamış | StartTable() ile son bir EndTable() her zaman eşleştirin ve her satırı EndRow() ile kapatın |
| Yeni hücreler ayarladığım biçimlendirmeyi almıyor | CellFormat / RowFormat hücreler zaten eklendikten sonra oluşturucuda değiştirildi | O içerik için InsertCell() / EndRow()‘ı çağırmadan önce DocumentBuilder.CellFormat / RowFormat‘i ayarlayın |
| Tablo, düzenlemelerden sonra beklediğim şekilde yeniden boyutlandırılmıyor. | AutoFit(), çağrıldığı anki tablo durumunu yansıtır, sürekli değildir. | Yapısal düzenlemelerden sonra Table.AutoFit(AutoFitBehavior)‘ı tekrar çağırın. |
| Birleşmiş gibi görünen komşu hücreler ayrı hücreler gibi davranır. | Hücreler yalnızca genişliklerine göre eşleştirildi, CellMerge ile işaretlenmedi. | Table.ConvertToHorizontallyMergedCells()‘ı çağırın veya CellFormat.HorizontalMerge / VerticalMerge‘yi açıkça ayarlayın. |
FAQ
DocumentBuilder ile sıfırdan bir tablo nasıl oluştururum?
Satırdaki her hücre için önce StartTable()‘ı çağırın, ardından InsertCell(), satırı kapatmak için EndRow(), ek satırlar için tekrarlayın ve sonunda tabloyu kapatmak için EndTable().
Sabit bir genişlik yerine yüzde temelli bir tablo genişliği nasıl ayarlarım?
PreferredWidth.FromPoints(value) yerine Table.PreferredWidth = PreferredWidth.FromPercent(value) atayın.
Bir hücredeki veya satırdaki tüm biçimlendirmeyi nasıl sıfırlarım?
Bir hücrenin CellFormat‘ine CellFormat.ClearFormatting() çağırın, ya da bir satırın RowFormat‘üne RowFormat.ClearFormatting() çağırın.
Tüm tablo için kenarlıkları ve gölgelendirmeyi aynı anda nasıl ayarlarım?
Her taraf için tek tip kenarlık kullanmak üzere Table.SetBorders(), bir tarafı tek tek ayarlamak için Table.SetBorder(), tek tip gölgelendirme için Table.SetShading() kullanın; ClearBorders() ve ClearShading() bunları sıfırlar.
API Reference Özeti
| Sınıf / Enum | Açıklama |
|---|---|
Table | Tablo düğümü; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth |
Row | Tablo satır düğümü; Cells, RowFormat, EnsureMinimum() |
Cell | Tablo hücre düğümü; CellFormat, EnsureMinimum() |
TableCollection / RowCollection / CellCollection | Table / Row / Cell düğümlerinin tiplenmiş koleksiyonları |
CellFormat | Hücre başına biçimlendirme: kenarlıklar, gölgelendirme, dolgu, birleştirme durumu, dikey hizalama |
RowFormat | Satır başına biçimlendirme: kenarlıklar, yükseklik, sayfa kırılması davranışı |
PreferredWidth / PreferredWidthType | Tablo veya hücre genişliği değeri ve birimi (otomatik, yüzde, puan) |
AutoFitBehavior | Table.AutoFit() nasıl bir tabloyu ve hücrelerini yeniden boyutlandırır |
CellMerge / CellVerticalAlignment | Yatay/dikey hücre birleştirme durumu ve dikey içerik hizalaması |
TableAlignment / TableStyleOptions / TextWrapping | Tablo genelinde hizalama, stil uygulaması ve metin kaydırma davranışı |
DocumentBuilder.StartTable / InsertCell / EndRow / EndTable | İmleç tabanlı tablo oluşturma |