.NET'de Tablolarla Nasıl Çalışılır
Bu kılavuz, programlı olarak tabloları nasıl oluşturacağınızı, biçimlendireceğinizi ve okuyacağınızı gösterir Aspose.Words FOSS for .NET, kullanarak Table, Row, ve Cell sınıfları içinde Aspose.Words.Tables ad alanı birlikte DocumentBuilder. Bir tabloyu sıfırdan oluşturmayı, hücreleri ve satırları oluştururken biçimlendirmeyi, tablo genelindeki yerleşimi ve AutoFit’ı kontrol etmeyi, tercih edilen genişlikleri ayarlamayı, hücreleri birleştirmeyi ve yüklü bir belgede zaten mevcut olan tabloları okumayı kapsar.
Adım Adım Kılavuz
Adım 1: Paketi Yükleyin
Aspose.Words FOSS for .NET henüz bir NuGet paketi yayınlamıyor – bunun yerine kütüphaneyi kaynak koddan derleyin. https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git‘ı klonlayın, ardından .NET SDK’sı ile Release yapılandırmasında Aspose.Words.sln‘i derleyin ve projenizde ortaya çıkan Aspose.Words derlemesini referans alın. Kütüphane .NET Standard 2.0 hedefli olduğundan, .NET Framework 4.6.2+ ve .NET 6/8/10 üzerinde çalışır.
Adım 2: Gerekli Sınıfları İçe Aktarın
Temel belge sınıfları (Document, DocumentBuilder) için bir using Aspose.Words; yönergesi ve bu kılavuzun kapsadığı tabloya özgü sınıflar için bir using Aspose.Words.Tables; yönergesi ekleyin – Table, Row, Cell, CellFormat, RowFormat, PreferredWidth ve ilgili enum’lar.
Adım 3: DocumentBuilder ile Yeni Bir Tablo Oluştur
Bir Document ve ona bağlı bir DocumentBuilder oluşturun, ardından imleçte bir tablo başlatmak için DocumentBuilder.StartTable()‘yi çağırın. Bir satırdaki her hücre için DocumentBuilder.InsertCell()‘ü çağırın, ardından satırı DocumentBuilder.EndRow() ile kapatın. Tablonun ihtiyaç duyduğu kadar satır için tekrarlayın ve tüm tabloyu DocumentBuilder.EndTable() ile kapatın. Her StartTable()‘ın eşleşen bir EndTable()‘i olmalı ve her satırın eşleşen bir EndRow()‘i olmalı; aksi takdirde oluşturucunun iç durumu — ve ortaya çıkan belge ağacı — bozulmuş olur.
Adım 4: Hücreleri ve Satırları Oluştururken Biçimlendir
DocumentBuilder.CellFormat ve DocumentBuilder.RowFormat‘i, InsertCell() veya EndRow()‘ü çağırmadan önce ayarlayın; bu, oluşturucunun oluşturmak üzere olduğu hücre ve satırlara biçim uygulamak içindir — bu iki özellik yeni içerik için bir şablon görevi görür, zaten eklenmiş hücrelerde geriye dönük bir değişiklik yapmaz. CellFormat, Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth ve dört dolgu özelliğini (LeftPadding, RightPadding, TopPadding, BottomPadding) ortaya çıkarır; bunların tümü SetPaddings() ile bir anda ayarlanabilir. RowFormat, Borders, Height, HeightRule, AllowBreakAcrossPages ve HeadingFormat‘ü ortaya çıkarır. Bir sonraki satır veya hücre için yeni değerler ayarlamadan önce CellFormat.ClearFormatting() veya RowFormat.ClearFormatting() çağırarak herhangi birini varsayılanlara sıfırlayın.
Adım 5: Tablo Genelinde Düzeni ve AutoFit’ı Ayarla
Tablo mevcut olduğunda, düzen özelliklerini doğrudan Table nesnesine ayarlayın: Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions) ve TextWrapping. Tüm tabloya tek bir kenar stili, genişliği ve rengi uygulamak için Table.SetBorders()‘yi çağırın, ya da tek bir kenarı ayarlamak için Table.SetBorder()‘ü; ClearBorders() ve ClearShading() bunları sıfırlar. Table.AutoFit(AutoFitBehavior), tabloyu ve hücrelerini seçilen davranışa göre yeniden boyutlandırır — herhangi bir yapısal düzenlemeden sonra tekrar çağırın, çünkü yalnızca çalıştırıldığı anda tablo durumunu yansıtır, sürekli olarak değil.
Adım 6: Tercih Edilen ve Hücre Genişliklerini Ayarla
PreferredWidth.FromPercent() statik fabrika yöntemleriyle mevcut sayfa genişliğine uyum sağlayan bir düzen için, ya da sabit genişlik için PreferredWidth.FromPoints() ile genişlik değerleri oluşturun; PreferredWidthType, verilen bir PreferredWidth‘ın hangi tür değeri (Auto, Percent veya Points) tuttuğunu rapor eder. Sonucu tüm tablo için Table.PreferredWidth‘e ya da tek bir hücre için CellFormat.PreferredWidth‘e atayın.
Adım 7: Hücreleri Birleştir
Birleştirmeye katılması gereken hücrelerde CellFormat.HorizontalMerge veya CellFormat.VerticalMerge (her ikisi de CellMerge olarak yazılmıştır) ayarlayarak hücreleri birleştirilmiş olarak işaretleyin. Hücreler, genişlikleri eşleştirilerek sadece görsel olarak birleştirilmiş gibi gösterildiyse ve açıkça işaretlenmemişse, bu görsel düzeni gerçek CellMerge durumuna dönüştürmek için Table.ConvertToHorizontallyMergedCells() çağırın. CellVerticalAlignment, birleştirmenin dışında, bir hücre içinde içeriğin dikey olarak nasıl hizalanacağını kontrol eder.
Adım 8: Mevcut Bir Belgede Tabloları Okuma
Yüklenmiş bir belgede zaten bulunan tablolarla çalışmak için, yeni tablolar inşa etmek yerine Body.Tables (veya başka herhangi bir Story üzerindeki Tables özelliği) — bir TableCollection — okuyun. Table.Rows, bir RowCollection döndürür ve Row.Cells, bir CellCollection döndürür; bu üç koleksiyon tipi, programatik düzenlemeler için Add(), Insert(), Remove(), RemoveAt(), Contains() ve IndexOf() destekler. Satırları veya hücreleri sildikten sonra, düğümün Word’ün beklediği minimum geçerli yapıyı koruması için Table.EnsureMinimum(), Row.EnsureMinimum() veya Cell.EnsureMinimum() çağırın — sırasıyla boş bir satır, boş bir hücre veya boş bir paragraf.
Yaygın Sorunlar ve Çözümler
Kaydedilen bir belge bozuk görünüyor veya kaydetme sırasında bir hata oluşuyor Bir satır ya da tablo hiç kapatılmadı. Her zaman eşleştir DocumentBuilder.StartTable() bir sonuncu ile EndTable(), ve her satırı … ile kapat EndRow() sonrakine geçmeden ya da tabloyu bitirmeden önce.
Yeni hücreler ayarladığım biçimlendirmeyi almaz CellFormat and RowFormat değiştirildi DocumentBuilder etkilenen hücreler zaten eklendikten sonra. Ayarla DocumentBuilder.CellFormat / RowFormat önce InsertCell() or EndRow() içeriği istediğiniz şekilde biçimlendiren çağrı.
Tablo, içeriğini düzenledikten sonra beklediğim şekilde yeniden boyutlandırılmıyor. Table.AutoFit(AutoFitBehavior) tablonun yapısını yalnızca çağrıldığı anda yansıtır. Düzenin yeniden ayarlanması gerekiyorsa, satır, hücre veya içerik ekleme/çıkarma gibi yapısal bir değişiklik yaptıktan sonra tekrar çağırın.
Birleştirilmiş gibi görünen hücreler, geri okunduğunda ayrı hücreler gibi davranır. Hücreler sadece genişliklerine göre eşleştirildi, işaretlenmedi CellMerge. Çağır Table.ConvertToHorizontallyMergedCells(), ya da ayarla CellFormat.HorizontalMerge / VerticalMerge birleştirilecek hücrelerde açıkça.
Satırları veya hücreleri kaldırmak, tabloyu geçersiz bir duruma bırakır Word, her birini bekler Table, Row, ve Cell minimum geçerli bir yapıyı korumak için. İçeriği programlı olarak kaldırdıktan sonra, şunu çağırın EnsureMinimum() az önce değiştirilen düğümde.
Sıkça Sorulan Sorular
Mevcut bir tabloyu düzenlemek yerine sıfırdan bir tabloyu nasıl oluşturabilirim?
DocumentBuilder‘ı kullanın: StartTable()‘i çağırın, ardından bir satırdaki her hücre için InsertCell()‘yi, satırı kapatmak için EndRow()‘ü, ek satırlar için tekrarlayın ve tabloyu kapatmak için EndTable()‘ü kullanın.
Yüklenmiş bir belgede zaten var olan tabloları nasıl alabilirim?
İlgilendiğiniz bölümün Body‘indeki Tables özelliğini (bir TableCollection) okuyun veya başlık ya da alt bilgi gibi başka bir Story‘de.
Tabloyu sabit bir genişlik yerine sayfa genişliğinin bir yüzdesi olarak nasıl ayarlarım?
Table.PreferredWidth = PreferredWidth.FromPercent(value) atayın, PreferredWidth.FromPoints(value) yerine.
SetBorders ve SetBorder ile kenarlık ayarlamanın farkı nedir?
Table.SetBorders() tablo içindeki tüm kenarlıklara aynı anda bir çizgi stili, genişlik ve renk uygular; Table.SetBorder() tek bir kenarı ayarlar, böylece farklı kenarlar farklı biçimlendirmelere sahip olabilir.
Bir hücreyi veya satırı yeniden kullanmadan önce biçimlendirmesini nasıl sıfırlarım?
Hücrenin CellFormat üzerine CellFormat.ClearFormatting() çağırın, ya da satırın RowFormat üzerine RowFormat.ClearFormatting().