TableCollection
İçindekiler
[
Saklamak
]TableCollection class
Bir koleksiyona yazılı erişim sağlarTable
düğümler.
Daha fazlasını öğrenmek için şu adresi ziyaret edin:Tablolarla Çalışmak dokümantasyon makalesi.
public class TableCollection : NodeCollection
Özellikleri
İsim | Tanım |
---|---|
Count { get; } | Koleksiyondaki düğüm sayısını alır. |
Item { get; } | Bir öğeyi alırTable verilen dizinde. (2 indexers) |
yöntemler
İsim | Tanım |
---|---|
Add(Node) | Koleksiyonun sonuna bir düğüm ekler. |
Clear() | Tüm düğümleri bu koleksiyondan ve belgeden kaldırır. |
Contains(Node) | Bir düğümün koleksiyonda olup olmadığını belirler. |
GetEnumerator() | Düğümlerin koleksiyonu üzerinde basit bir “foreach” stili yinelemesi sağlar. |
IndexOf(Node) | Belirtilen düğümün sıfır tabanlı dizinini döndürür. |
Insert(int, Node) | Belirtilen dizindeki koleksiyona bir düğüm ekler. |
Remove(Node) | Düğümü koleksiyondan ve belgeden kaldırır. |
RemoveAt(int) | Belirtilen dizindeki düğümü koleksiyondan ve belgeden kaldırır. |
ToArray() | Koleksiyondaki tüm tabloları yeni bir tablo dizisine kopyalar. (2 methods) |
Örnekler
Bir belgedeki tüm tabloların ilk ve son satırlarının nasıl kaldırılacağını gösterir.
Document doc = new Document(MyDir + "Tables.docx");
TableCollection tables = doc.FirstSection.Body.Tables;
Assert.AreEqual(5, tables[0].Rows.Count);
Assert.AreEqual(4, tables[1].Rows.Count);
foreach (Table table in tables.OfType<Table>())
{
table.FirstRow?.Remove();
table.LastRow?.Remove();
}
Assert.AreEqual(3, tables[0].Rows.Count);
Assert.AreEqual(2, tables[1].Rows.Count);
Bir tablonun iç içe olup olmadığının nasıl öğrenileceğini gösterir.
public void CalculateDepthOfNestedTables()
{
Document doc = new Document(MyDir + "Nested tables.docx");
NodeCollection tables = doc.GetChildNodes(NodeType.Table, true);
for (int i = 0; i < tables.Count; i++)
{
Table table = (Table)tables[i];
// Tablodaki herhangi bir hücrenin alt tablo olarak başka tabloları olup olmadığını öğrenin.
int count = GetChildTableCount(table);
Console.WriteLine("Table #{0} has {1} tables directly within its cells", i, count);
// Tablonun başka bir tablonun içinde olup olmadığını ve eğer öyleyse hangi derinlikte olduğunu öğrenin.
int tableDepth = GetNestedDepthOfTable(table);
if (tableDepth > 0)
Console.WriteLine("Table #{0} is nested inside another table at depth of {1}", i,
tableDepth);
else
Console.WriteLine("Table #{0} is a non nested table (is not a child of another table)", i);
}
}
/// <summary>
/// Bir tablonun diğer tabloların içine hangi seviyede yerleştirildiğini hesaplar.
/// </summary>
/// <returns>
/// Tablonun iç içe geçme derinliğini belirten bir tamsayı (ana tablo düğümlerinin sayısı).
/// </returns>
private static int GetNestedDepthOfTable(Table table)
{
int depth = 0;
Node parent = table.GetAncestor(table.NodeType);
while (parent != null)
{
depth++;
parent = parent.GetAncestor(typeof(Table));
}
return depth;
}
/// <summary>
/// Bir tablonun hücreleri içinde herhangi bir doğrudan alt tablo içerip içermediğini belirler.
/// Daha fazla tablo olup olmadığını kontrol etmek için bu tabloların arasında yinelemeli olarak geçiş yapmayın.
/// </summary>
/// <returns>
/// Eğer en az bir alt hücre tablo içeriyorsa true değerini döndürür.
/// Tablodaki hiçbir hücre tablo içermiyorsa false değerini döndürür.
/// </returns>
private static int GetChildTableCount(Table table)
{
int childTableCount = 0;
foreach (Row row in table.Rows.OfType<Row>())
{
foreach (Cell Cell in row.Cells.OfType<Cell>())
{
TableCollection childTables = Cell.Tables;
if (childTables.Count > 0)
childTableCount++;
}
}
return childTableCount;
}
Ayrıca bakınız
- class NodeCollection
- ad alanı Aspose.Words.Tables
- toplantı Aspose.Words