U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Een Word-document genereren op basis van de gegevens van de actieve klantenfiche

0000001992     -      02-12-2014

Via onderstaande voorbeelden  (Word 2007 ou alle Word versies) kan Microsoft Word automatisch de naam en het adres van de klant invoeren in een standaarddocument. Deze gegevens worden ingevoerd in een bestaande bladwijzer (bookmark) die de naam "Adres" krijgt. De code dient in een knop te worden geplaatst die in het informatiebestand "Klanten" zal worden geplaatst. Het oorspronkelijke Word-bestand (lettre.docx) moet in de subdirectory Files van de gegevensdirectory van Mercator worden geplaatst. U vindt dit bestand in de zip van deze pagina.

De module zal een nieuw docx-bestand genereren dat in het object "Bestandsbrowser" van deze klantenfiche wordt geplaatst.

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
            string c_id = clickedButton.Form.DataSource.Rows[0]["C_ID"].ToString().TrimEnd();
            if (c_id == "")
                return;
            string text = clickedButton.Form.DataSource.Rows[0]["C_NOM"].ToString().TrimEnd() + "\r\n"
                        + clickedButton.Form.DataSource.Rows[0]["C_ADRESSE"].ToString().TrimEnd() + "\r\n"
                        + clickedButton.Form.DataSource.Rows[0]["C_ADRESSE2"].ToString().TrimEnd() + "\r\n"
                        + clickedButton.Form.DataSource.Rows[0]["C_CODEP"].ToString().TrimEnd() + "    " + clickedButton.Form.DataSource.Rows[0]["C_VILLE"].ToString().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.docx";
            if (!System.IO.File.Exists(origFileName.ToString()))
            {
                MercatorUi.Dialogs.Stop(string.Format("Bestand niet gevonden: \"{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);
        }


    }
}

De ontwikkeling werd getest met Microsoft Word 2007.

 

Vous trouverez ci-après l'extrait de code offrant la même fonctionnalité mais en étant compatible avec toutes les versions de Word (avec le document lettre.docx ci-joint)

Zoom
...
using System.Reflection;
...

object ox_word = null;
try
{
    Type type = Type.GetTypeFromProgID("word.basic");
    ox_word = Activator.CreateInstance(type);
    type.InvokeMember("FileOpen", BindingFlags.Default | BindingFlags.InvokeMethod, null, ox_word, new object[1] { @"C:\Test\lettre.docx" });
    type.InvokeMember("ww7_editGoto", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[1] { "Date" });
    type.InvokeMember("insert", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[1] { "28 novembre 2014" });
    type.InvokeMember("ww7_editGoto", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[1] { "Adresse" });
    type.InvokeMember("insert", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[1] { "Nom" });
    type.InvokeMember("insertPara", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[0]);
    type.InvokeMember("insert", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[1] { "Adresse" });
    type.InvokeMember("insertPara", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[0]);
    type.InvokeMember("insert", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[1] { "Adresse 2" });
    type.InvokeMember("insertPara", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[0]);
    type.InvokeMember("insert", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[1] { "CodeP Ville" });
    type.InvokeMember("insertPara", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[0]);
    type.InvokeMember("AppShow", BindingFlags.Default | BindingFlags.InvokeMethod | BindingFlags.IgnoreReturn, null, ox_word, new object[0]);
}
catch (Exception ex)
{
    MercatorUi.Dialogs.Stop(ex.Message + (ex.InnerException != null ? "\r\n" + ex.InnerException.Message : ""));
}
finally
{
    if (ox_word != null)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(ox_word);
}

 



Te laden : 0000001992.zip (18 Kb - 01-12-2014)