2016-05-27 12 views

Antwort

0

Ok, also habe ich eine Lösung gefunden. Um ein Dokument an einer bestimmten Position einzufügen, teile ich das Originaldokument in zwei Quellen für den DocumentBuilder, dann erstellte ich eine Quelle aus dem einzufügenden Dokument. Am Ende habe ich ein neues Dokument mit diesen 3 Quellen erstellt und es scheint gut zu funktionieren.

Ich suche nach dem Absatz, um das Originaldokument durch einen Platzhalter zu teilen, zum Beispiel "@@ einfügen @@".

Bellow ist der Code, wenn jemand es braucht.

var paragraph = DestinationDocument.MainDocumentPart.Document.Descendants<OpenXmlParagraph>().FirstOrDefault(item => item.InnerText.Contains(placeHolder)); 

       if (paragraph != null) 
       { 
        var idOfParagraph = 
        DestinationDocument.MainDocumentPart.Document.Descendants<OpenXmlParagraph>() 
         .ToList() 
         .IndexOf(paragraph); 

        //save and close current destination document 
        SaveChanges(destinationFilePath, false); 

        var sources = new List<Source>(); 

        var originalDocument = new WmlDocument(destinationFilePath); 

        sources.Add(new Source(originalDocument, 0, idOfParagraph, true)); // add first part of initial document 

        var documentToBeInserted = new WmlDocument(docFilePath); 
        sources.Add(new Source(documentToBeInserted, true)); // add document to be inserted 

        sources.Add(new Source(originalDocument, idOfParagraph + 1, true)); // add rest of initial document 


        var newDestinationDocument = DocumentBuilder.BuildDocument(sources); // build new document 
        newDestinationDocument.SaveAs(destinationFilePath); // save 

        // re-open destination document 
        DestinationDocument = WordprocessingDocument.Open(Path.GetFullPath(destinationFilePath), true); 
       } 
Verwandte Themen