0
votes

Comment copier un contenu de document Word dans un autre document Word, y compris les signets?

Je souhaite copier le contenu d'un document Word sur un autre document Word, y compris les signets. Comment je peux le faire avec C #?

J'ai essayé d'utiliser Microsoft.Office.interop.word. xxx

mais dans la destination.docx Il n'y a pas les signets Source.docx. Comment puis-je inclure les signets Source.docx dans Destination.Docx aux mêmes positions?


3 commentaires

ERRRRRMMM .... Donc, vous voulez copier tout le contenu d'un document Word sur un nouveau vide et sauvegarder cela? ... Pourquoi ne pas simplement enregistrer l'original sous un nouveau nom / chemin? Mission accomplie, non?


@Anasalweish J'ai utilisé ce code, mais dans mon nouveau doc, il n'y a pas les premiers bookmars Doc. Donc, ce n'est pas une question en double.


Je suis d'accord, comment est ce que vous voulez réaliser différent de simplement faire une copie du fichier? Pouvez-vous clarifier?


3 Réponses :


0
votes

Je vous recommanderais d'utiliser Open XML SDK. Vous pouvez trouver la documentation officielle ici https://docs.microsoft.com/fr- US / Office / Office / Open-XML / Open-XML-SDK

Voici un code pour copier un document Word pris à partir d'ici: Duplicant Word Document utilisant OpenXML et C # P>

using (var mainDoc = WordprocessingDocument.Open(@"c:\sourcedoc.docx", false))
using (var resultDoc = WordprocessingDocument.Create(@"c:\newdoc.docx",
  WordprocessingDocumentType.Document))
{
  // copy parts from source document to new document
  foreach (var part in mainDoc.Parts)
    resultDoc.AddPart(part.OpenXmlPart, part.RelationshipId);
  // perform replacements in resultDoc.MainDocumentPart
  // ...
}


0 commentaires

1
votes

Comme mentionné dans mon commentaire, la copie de l'ensemble du contenu n'est pas différente de l'enregistrement d'une copie du document à un nouvel endroit. Vous pouvez même atteindre cela sans mot, simplement en utilisant system.io.file.copy.copy.copy.copy code>.

qui étant dit, ce serait un exemple de la réalisation de ce mot interoper, tout au cas où vous le voudriez Pour enregistrer une seule partie d'un document dans un autre document (par exemple avec une plage différente autre que Contenu code>): p>

var wdApp=new Word.Application();
var docments = wdApp.Documents;
var doc = docments.Open(pathToSourceDoc);
var doc2 = docments.Add();
doc.Content.Copy();
doc2.Content.Paste();
doc2.SaveAs(pathToCopyDoc);
doc2.Close();
doc.Close();
Marshal.ReleaseComObject(doc2);
Marshal.ReleaseComObject(doc);
Marshal.ReleaseComObject(docments);
wdApp.Quit();
Marshal.ReleaseComObject(wdApp);


0 commentaires

0
votes

En supposant que l'objectif est de travailler avec la copie, laissant l'original inchangé, l'approche optimale du mot consiste à utiliser documents.add code>, spécifiant l'orignal comme "modèle" à utiliser pour le nouveau document. (Remarque: cette méthode peut fonctionner avec le document ainsi que les fichiers de modèle.) Qui créera une copie du document d'origine dans l'interface Word Application afin que le code ou l'utilisateur puisse continuer à travailler. Pas besoin d'ouvrir le document original; Pas de danger de ne pas modifier indésirable.

Application wApp = new Application();
Documents wDocs = wApp.Documents;
Document wDoc = wDocs.Add(@"source\path\source.docx", Type.Missing, Type.Missing, true);
Range oRange = wDoc.Content;
wDoc.SaveAs(@"destination\path\destination.docx");
wDoc.Activate();


0 commentaires