Gibt es eine Möglichkeit, ein ganzes docx-Dokument in ein anderes docx-Dokument einzufügen, ohne Altchunks zu verwenden? Das Problem ist, dass ich nach dem Einfügen das resultierende Dokument mit einem anderen unter Verwendung DocumentBuilder von OpenXml Powertools zusammenführen muss und es Dokumente nicht unterstützt, die Altchunks enthält.So fügen Sie ein docx-Dokument an einer bestimmten Position in ein anderes docx ein ohne Altchunk
1
A
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
- 1. verschieben Sie ein Array und fügen Sie ein neues Element an einer bestimmten Position mit memcpy
- 2. fügen Sie ein anderes Layout
- 3. So konvertieren Sie Zeichenfolge in ein anderes Datumsformat ohne Fehler
- 4. Wie fügen Sie Pods in ein anderes Teilprojekt ein?
- 5. So fügen Sie Klartext ein?
- 6. So fügen Sie ein div in ein Dropdown-Feld ein
- 7. IOS So verankern Sie ein UITextField an einer festen Position
- 8. So fügen Sie Daten in ein Div-Popup ein
- 9. So fügen Sie ein Symbol in das div-Menü ein
- 10. Mit jQuery ein Element an einer bestimmten Position finden?
- 11. So skalieren Sie ein Bild auf ein anderes Bild
- 12. So kopieren Sie ein Klassenobjekt in ein anderes Klassenobjekt
- 13. So fügen Sie AWS-Service-Fehlercodes in ein Drittanbieterprojekt ein
- 14. RecyclerView android: an einer bestimmten Position ein Element Erste
- 15. So fügen Sie HTML in ein UIWebView ein
- 16. So fügen Sie ein Paket in meine JAR-Datei ein
- 17. So kopieren Sie ein Grafikobjekt in ein anderes
- 18. So legen Sie ein anderes Thema für ein Layout fest
- 19. Setzen Sie ein Fragment in ein anderes
- 20. So fügen Sie Autovervollständigungsvorlagen in monodevelop ein
- 21. So fügen Sie Text in ein Pygame-Rechteck ein
- 22. So fügen Sie ein Bild in eine Aktivität ein
- 23. So fügen Sie XUL in ein XHTML-Dokument ein
- 24. So fügen Sie ein neues Element in das Systemmenü ein
- 25. So fügen Sie ein Datum in die Datenbank ein
- 26. So fügen Sie ein Servlet in die JSF-Seite ein
- 27. So fügen Sie eine Kombinationsfeldoption in ein Eigenschaftenraster ein
- 28. So fügen Sie eine Zeile/ein Dokument in MongoDB ein
- 29. ein Objekt an ein anderes Objekt initialisieren
- 30. So fügen Sie ein Paket zu godeps