我使用Aspose库来格式化Word文档。
在带有DocumentBuilder.InsertHtml()
的书签中插入html表后,我想检索此表的Aspose节点。
但是当迭代书签周围的节点时,我无法找到该表,即使文档中的表总数正确递增。还有另一种方式吗?
答案 0 :(得分: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");
和班级的定义&#39; HandleNodeChanging&#39;实现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一起担任开发者布道者。