comment puis-je mettre un contenu dans un champ de fusion dans docx

Je suis de développement d'une application web avec asp.net et j'ai un fichier appelé Template.docx qui fonctionne comme un modèle pour générer d'autres rapports. À l'intérieur de ce Template.docx j'ai quelques MergeFields (Titre, Nomclient, Contenu, Pied de page, etc), afin de remplacer pour certains du contenu dynamique en C#.

Je voudrais savoir, comment puis-je mettre un contenu dans un champ de fusion dans docx ?

Je ne sais pas si MergeFields est la bonne façon de le faire ou si il ya une autre façon. Si vous pouvez me suggérer, je l'apprécie!

PS: j'ai openxml référencé dans mon application web.

Modifications:

private MemoryStream LoadFileIntoStream(string fileName)
{
    MemoryStream memoryStream = new MemoryStream();
    using (FileStream fileStream = File.OpenRead(fileName))
    {
        memoryStream.SetLength(fileStream.Length);
        fileStream.Read(memoryStream.GetBuffer(), 0, (int) fileStream.Length);

        memoryStream.Flush();
        fileStream.Close();
    }
    return memoryStream;
}

public MemoryStream GenerateWord()
{
    string templateDoc = "C:\\temp\\template.docx"; 
    string reportFileName = "C:\\temp\\result.docx";

    var reportStream = LoadFileIntoStream(templateDoc);

    //Copy a new file name from template file
    //File.Copy(templateDoc, reportFileName, true);

    //Open the new Package
    Package pkg = Package.Open(reportStream, FileMode.Open, FileAccess.ReadWrite);

    //Specify the URI of the part to be read
    Uri uri = new Uri("/word/document.xml", UriKind.Relative);
    PackagePart part = pkg.GetPart(uri);

    XmlDocument xmlMainXMLDoc = new XmlDocument();
    xmlMainXMLDoc.Load(part.GetStream(FileMode.Open, FileAccess.Read));

    //replace some keys inside xml (it will come from database, it's just a test)
    xmlMainXMLDoc.InnerXml = xmlMainXMLDoc.InnerXml.Replace("field_customer", "My Customer Name");
    xmlMainXMLDoc.InnerXml = xmlMainXMLDoc.InnerXml.Replace("field_title", "Report of Documents");
    xmlMainXMLDoc.InnerXml = xmlMainXMLDoc.InnerXml.Replace("field_content", "Content of Document");

    //Open the stream to write document
    StreamWriter partWrt = new StreamWriter(part.GetStream(FileMode.Open, FileAccess.Write));
    //doc.Save(partWrt);
    xmlMainXMLDoc.Save(partWrt);

    partWrt.Flush();
    partWrt.Close();
    reportStream.Flush();
    pkg.Close();

    return reportStream;
}

PS: Quand je convertir MemoryStream à un fichier, j'ai un fichier corrompu. Merci!

Je suis en supposant que l'utilisation de Word pour perfrom une fusion n'est pas une option ici ?
Non, en Fait, j'ai besoin de remplir ces champs, je voudrais remplacer mon contenu dynamique. Je ne sais pas si MergeFields est la bonne façon de le faire. Merci!!!!
Généralement la façon dont vous voulez mettre du contenu dans le champ de fusion est par présenteront les pièces d'un publipostage avec une source de données qui contient vous du contenu dynamique. Ce libaray êtes-vous d'utiliser pour manipuler le fichier docx de l'asp.net code ?
Eh bien, j'ai DocumentFormat.OpenXml référencé dans mon projet, mais il n'est pas nécessaire d'être utilisé. J'ai trouvé un code qui fait ce dont j'ai besoin et je l'ai eu à travailler 🙂 ... mais il utilise un FileStream, donc, je me demandais si est-il un moyen pour générer un docx en MemoryStream et de l'envoyer à côté client? Regardez mes modifications! Merci @user957902
Jetez un oeil à la DocumentFormat.OpenXml.Wordprocessing.MailMerge classe. Vous pourriez aussi envisager d'en utiliser DocumentVariables au lieu de cela, si c'est un peu obsolète.

OriginalL'auteur Felipe Oriani | 2011-12-06