2015-10-28 7 views
0

Я использую библиотеку Aspose для форматирования документа Word.С помощью Aspose, как получить узел таблицы после inserthtml?

После вставки таблицы html в закладки с помощью DocumentBuilder.InsertHtml(), я хотел бы, чтобы извлекал узел Aspose для этой таблицы.

Но при переходе по узлам вокруг закладки я не могу найти таблицу, хотя общее количество таблиц в документе правильно увеличивается. Есть ли другой способ?

ответ

2

Вы можете удовлетворить это требование, используя Интерфейс INodeChangingCallback. Вот пример кода:

Document doc = new Document(MyDir + @"input.docx"); 
DocumentBuilder builder = new DocumentBuilder(doc); 

builder.MoveToBookmark("tbl"); 

HandleNodeChanging handler = new HandleNodeChanging(); 
doc.NodeChangingCallback = handler; 
builder.InsertHtml("<table border='1'><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>"); 

foreach (Table table in handler.InsertedTables) 
{ 
    // Your logic here 
}  

doc.Save(MyDir + @"15.9.0.docx"); 

И определение класса 'HandleNodeChanging', который реализует интерфейс INodeChangingCallback выглядит следующим образом:

public class HandleNodeChanging : INodeChangingCallback 
{ 
    void INodeChangingCallback.NodeInserted(NodeChangingArgs args) 
    { 
     if (args.Node.NodeType == NodeType.Table) 
      mInsertedTables.Add(args.Node); 
    } 

    void INodeChangingCallback.NodeInserting(NodeChangingArgs args) 
    { 
     // Do Nothing 
    } 

    void INodeChangingCallback.NodeRemoved(NodeChangingArgs args) 
    { 
     // Do Nothing 
    } 

    void INodeChangingCallback.NodeRemoving(NodeChangingArgs args) 
    { 
     // Do Nothing 
    } 

    public List<Node> InsertedTables 
    { 
     get { return mInsertedTables; } 
    } 

    private readonly List<Node> mInsertedTables = new List<Node>(); 
} 

Надежда, это помогает.

Я работаю с Aspose как Developer Evangelist.

+1

Спасибо! Я мог бы получить вставленные узлы этим методом. –