Cómo agregar un objeto de nodo desde otro documento de WORD
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;