Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Générer un document Word prenant en compte des données de la fiche client en cours

0000001992     -      26/08/2017

Les exemples ci-dessous (Word 2007 ou toutes versions Word) permettent d'automatiser Microsoft Word pour placer dans un document type le nom et l'adresse du client. Ces coordonnées sont placées à l'endroit d'un signet (bookmark) existant et nommé "Adresse". Le code est destiné à être placé dans un bouton placé dans le signalétique client. Le fichier Word de départ (lettre_2007.docx) doit être placé dans le sous-répertoire Files du répertoire des données de Mercator. Il est disponible dans le fichier Zip de cette page.

Le module va générer un nouveau fichier docx qui sera placé dans l'objet "Explorateur de fichiers" de cette fiche client.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
// <ReferenceInclude>"C:\Windows\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll"</ReferenceInclude>

namespace MercatorUi.MovableControls.ButtonsCodes
{
    public static class Script
    {

        public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
        {
            // enter your customized code here
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)clickedButton.Form;
            string c_id = sigForm.CliRecord.C_ID.TrimEnd();
            if (c_id == "")
                return;
            string text = sigForm.CliRecord.C_NOM.TrimEnd() + "\r\n"
                        + sigForm.CliRecord.C_ADRESSE.TrimEnd() + "\r\n"
                        + sigForm.CliRecord.C_ADRESSE2.TrimEnd() + "\r\n"
                        + sigForm.CliRecord.C_CODEP.TrimEnd() + "    " + sigForm.CliRecord.C_VILLE.TrimEnd();

            object missing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Word.Application ox_word = new Microsoft.Office.Interop.Word.Application();

            object origFileName = MercatorUi.Globals.RepData + "files\\lettre_2007.docx";
            if (!System.IO.File.Exists(origFileName.ToString()))
            {
                MercatorUi.Dialogs.Stop(string.Format("Fichier non trouvé : \"{0}\" !", origFileName));
                return;
            }
            object isVisible = true;
            object readOnly = false;
            Microsoft.Office.Interop.Word.Document ox_document = ox_word.Documents.Open(ref origFileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);

            string destDir = MercatorUi.Globals.RepData + "files\\cli\\" + Api.CleanRep(c_id);
            if (!System.IO.Directory.Exists(destDir))
                System.IO.Directory.CreateDirectory(destDir);
            object destFileName = destDir + "\\" + DateTime.Now.ToString("yyyMMddHHmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo) + ".docx";
            ox_document.SaveAs(ref destFileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

            object bookmarkName = "Adresse";
            Microsoft.Office.Interop.Word.Bookmark bookmark = ox_document.Bookmarks.get_Item(ref bookmarkName);
            if (bookmark != null)
                bookmark.Range.Text = text;

            ox_word.Visible = true;

            System.Runtime.InteropServices.Marshal.ReleaseComObject(ox_document);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(ox_word);
        }
    }
}


A télécharger : 0000001992.zip (18 Kb - 01/12/2014)