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 bir EndRow() ve son bir EndTable() 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() veya EndRow() çağrısından önce DocumentBuilder.CellFormat ve DocumentBuilder.RowFormat ayarlayın; oluşturucu, ekleme anında o anda ayarlanmış olanı uygular.
  • İçeriği programlı olarak kaldırdıktan sonra Table.EnsureMinimum(), Row.EnsureMinimum() veya Cell.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çin PreferredWidth.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

SorunNedenDüzelt
Tablo bozulmuş görünüyor veya kaydedildiğinde hata veriyorBir 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ıyorCellFormat / RowFormat hücreler zaten eklendikten sonra oluşturucuda değiştirildiO 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 / EnumAçıklama
TableTablo düğümü; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth
RowTablo satır düğümü; Cells, RowFormat, EnsureMinimum()
CellTablo hücre düğümü; CellFormat, EnsureMinimum()
TableCollection / RowCollection / CellCollectionTable / Row / Cell düğümlerinin tiplenmiş koleksiyonları
CellFormatHücre başına biçimlendirme: kenarlıklar, gölgelendirme, dolgu, birleştirme durumu, dikey hizalama
RowFormatSatır başına biçimlendirme: kenarlıklar, yükseklik, sayfa kırılması davranışı
PreferredWidth / PreferredWidthTypeTablo veya hücre genişliği değeri ve birimi (otomatik, yüzde, puan)
AutoFitBehaviorTable.AutoFit() nasıl bir tabloyu ve hücrelerini yeniden boyutlandırır
CellMerge / CellVerticalAlignmentYatay/dikey hücre birleştirme durumu ve dikey içerik hizalaması
TableAlignment / TableStyleOptions / TextWrappingTablo genelinde hizalama, stil uygulaması ve metin kaydırma davranışı
DocumentBuilder.StartTable / InsertCell / EndRow / EndTableİmleç tabanlı tablo oluşturma

Ayrıca Bakınız

 Türkçe