Red de conocimiento informático - Material del sitio web - Cómo agregar un objeto de nodo desde otro documento de WORD

Cómo agregar un objeto de nodo desde otro documento de WORD

Primero mire un fragmento de código que pretende obtener la primera tabla de docSource e insertarla al final de docTarget:

1 var table = (Table)docSource.GetChild(NodeType.Table, 0, true ) ;2 docTarget.FirstSection.Body.ChildNodes.Add(table);

Este código provocará una excepción:

1.FirstSection.Body.ChildNodes.Add(table);

Este código genera la excepción: "newChild se creó a partir de un documento diferente al que creó este nodo".

La razón es que, para un objeto Nodo Aspose.Words, tiene una variedad de controles de estilo y formato, dependiendo de su documento principal DocumentBase (que es donde se declaran muchos objetos Aspose.Words), y usted Se debe especificar su parámetro DocumentBase. Por ejemplo, al declarar una tabla, debe ser de la siguiente manera:

1 Documento doc=new Document(); 2 Table table=new Table(doc);

Entonces, ¿hay alguna forma de agregar otro objeto al documento? Sí, debe pasar el método Document.ImportNode o utilizar un objeto NodeImporter.

El principio de ambos métodos es importar el nodo del documento de origen al documento de destino y luego agregar el nodo a la ubicación adecuada.

Document.ImportNode

1 /// lt; resumengt; 2 /// Implementación manual del documento. 4 ///lt;/summarygt;5///lt;param name="dstDoc"gt;El documento de destino al que agregar.lt;/paramgt; 6 ///lt;param name="srcDoc"gt; Documento fuente. lt;/paramgt; 7 /// lt;param name="mode"gt;El modo de importación que se utilizará al importar contenido de otro documento.lt;/paramgt; 8 public void AppendDocument(Documento dstDoc, Documento srcDoc, modo ImportFormatMode) 9 {10 // Recorre todas las secciones del documento fuente.12 foreach (Sección srcSection en srcDoc)13 {14 // Como queremos copiar una sección de un documento a otro, 15 // necesitamos copiar la sección The El nodo importa el documento de destino. //20 Nodo dstSection = dstDoc.ImportNode(srcSection, true, mode); 21 22 // Ahora se pueden agregar nuevos nodos de sección al documento de destino.

dstDoc.AppendChild(dstSection); 24 }25 }

NodeImporter

1 documento estático público GenerateDocument(Documento srcDoc, nodos ArrayList) 2 { 3 // Crea un documento en blanco. 4 Documento dstDoc = new Document(); 5 // Elimina el primer párrafo del documento en blanco. 6 dstDoc coloca la lista en un documento nuevo. Mantenga el formato original del nodo. 9 Importador NodeImporter = new NodeImporter(srcDoc, dstDoc, ImportFormatMode. KeepSourceFormatting); 10 11 foreach (nodo nodo en nodos)12 {13 Nodo importNode = importer.ImportNode(nodo, verdadero); )AppendChild(importNode); 15 }16 17 // Devuelve el documento generado.18 return dstDoc;