XSL T pour word - InfoPath Dev
in

InfoPath Dev

XSL T pour word

Last post 01-03-2007 02:55 AM by Coita Thierry. 8 replies.
Page 1 of 1 (9 items)
Sort Posts: Previous Next
  • 12-11-2006 01:29 AM

    XSL T pour word

    Voila mon problème :

    j'ai un formulaire sous infopath mais la mise en page sous infopath n'est pas satisfaisante (entete pied de page saut de page dans des tableaux extensivble et j'en passe) mon idée était d'envoyer le contenu vers word ou je définirai le contenant et j'en verrai le contenu d'infopath grâce à l'option ajouter une vue d'impression sous word si j'ai bien compris comme cela marche le problème c que je ne connais rien au xsl t et je ne trouve aucun exemple de personne utilisant cette fonction vers word
  • 12-11-2006 01:44 AM In reply to

    Salut,

    En faite c'est possible de faire ce que tu veux faire mais tu ne pourras pas le faire avec infopath et la vue d'impression word...

    Il faut que tu apprennes comment fonctionne le modèle objet de word pour pouvoir créer un xslt qi te fera la vue que tu souhaite pour l'impression. Moi je lance un code C# qui me transforme mon formulaire xml et qui me lance word 2003 ou 2007.

    Mais si tu n'y connais rien en XSLT ca rique d'être dure...

    Ce que tu peux faire dans ce cas la pour que ca soit simple c'est de créer dans word la vue que tu veux et faire un save as au format xml et après tu l'ouvre dans un éditeur xml et tu le "transforme" en xslt.

    Pour plus d'info sur le format wordML c'est ici:

    http://www.labo-dotnet.com/Articles/Office/Présentation%20WordML%20et%20génération%20de%20fichiers%20Word/173.aspx

    ++

    Thierry
    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 12-11-2006 04:03 AM In reply to

    merci beaucoup pour le lien car effectivement il m'éclaire sur certains truc mais je ne vois pas encore comment réaliser certaines choses par exemple j'ai un tableau extensible sous infopath je voudrais le retrouver sous word comment faire pour indiquer dans le xslt que les noeuds par exemples nom font dans la 1er colonne d'un tableau sous word que les prenoms font dans la deuxieme ...

    tu parles dans un commentaire du lien que tu m'as donné de XML2WORD.xsl peux tu m'en dires plus

    as tu d'autres tutoriaux plus avancés pour l'exportation vers word grace au biais de wordml
  • 12-11-2006 04:39 AM In reply to

    Ben justement pour ton tableau il de faut faire un xsl:for-each ou xsl:apply-templates pour que le nombre de ligne correspondent à ton nombre d'occurence. Mais ca c'est du XSLT et si tu veux un un tuto va voir ici :
    http://xml.developpez.com/cours/

    y a une bonne introduction a XSLT!

    pour ce qui est de xml2word je sais pas je n'ai toujours pas essayé et je pense pas m'en servir un jour...

    Je vois pas en quoi une autre tuto pourrais être utile l'essentiel est couvert par celui que je t'ai donné. Mais il existe le SDK de WordML il est est référencé toute les balises et toute les possibilités. tu peux le dl ici:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=ca83cb4f-8dee-41a3-9c25-dd889aea781c&DisplayLang=en

    Mais comme je te le disais avant le mieux pour comprendre c'est de faire ton document comme tu le voudrais et de l'enresgistré au format xml puis de le "transformer" en XSLT si tu ne veux pas tous écrire toi même!
    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 12-28-2006 08:14 AM In reply to

    Alors voila je viens de me faire une petite mise a jour concernant le XSL XSLT et je me suis documenter sur le WORDML afin de trouver une solution à mon probleme de mise en page.

    Voila où j'en suis transformer mon XML en WORDML et l'ouvrir sous word

    j'ai trouvé un dans le sdk de infopath un utilitaire wizard.hta permettant de générer un xsl/t à partir d'un xsn et d'une mise en forme faite sous word. Apres avoir galérer pour le faire fonctionner probleme de dll à enregistrer j'ai enfin mon xsl générer.
    J'ai voulu faire "AJouter une vue d'impression pour WORD" qui permettrait lors de l'impression de le mettre en forme comme le demande le xsl ajouter . Problème cela ne m'imprime pas les données je pense que le xsl doit avoir un problème de chemin.
    Mais j'aimerai ensuite l'automatiser cad faire un bouton dans le formalaire qui me permettrait en faisant appel au xsl de générer un wordml et d'ouvrir le fichier wordml.


    Virgul tu dis "Moi je lance un code C# qui me transforme mon formulaire xml et qui me lance word 2003 ou 2007" comment peux tu utiliser du code c# alors que infopath ne gére que le vb et le jscript mais je suis preneur si tu le veux bien du code.

    Si quelqu'un a le code pour faire appel a word je suis preneur et surtout je cherche comment via code faire appel au xsl et générer le wordml je suis preneur de toute aide.

    Merci d'avance
  • 12-28-2006 08:23 AM In reply to

    quote:
    comment peux tu utiliser du code c# alors que infopath ne gére que le vb et le jscript mais je suis preneur si tu le veux bien du code.


    ... Non c'est pas tout à fait exacte car si tu possède Visual Studio 2003 ou 2005 (pour la 2005 il existe une versio gratuite "express" je crois) et après avoir installé le toolkit infopath pour VS tu peux créer de projet infopath en code .Net (C# et VB.Net) et même le framework 2.0.

    Moi ce que je fait c'est que je fais la transformation xsl en code j'enregistre le tout dans temp (répertoire que tout le monde possède) et je le lance avec l'interop com de Word 11.0.

    Voila

    ++

    Thierry
    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 12-28-2006 08:25 AM In reply to

    ah j'oubliais concernant ta méthode avec ton wizard je ne connais pas et je vais te dire ca ne m'intéresse pas trop.... d'autant plus que je sais pas si ca a changé mais ca ne supportait pas les sections répétitive (et j'ai quasiment que ca moi dans mon formulaire...)


    si je me souviens bien ca faisait planter la totalité de la transfo si bien que ca générait un doc vide (enfin il me semble)
    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 12-28-2006 08:32 AM In reply to

    pour les sections repetitives je pe pas trop de te dire dans le sens ou ca ne marche pas encore mais il semblerait que si car dans le xsl il générer des for each qui devrait permettre de gérer les zones repetitives a mon avis.
    Ta solution avec visual studio m'interesse mais le soucis c que je ne connais que le visual c++ 6 j'ai installé la visual studio mais je nage encore

    si tu le veux bien j'aimerai voir ton code sur :"xsl en code j'enregistre le tout dans temp (répertoire que tout le monde possède) et je le lance avec l'interop com de Word 11.0."
  • 01-03-2007 02:55 AM In reply to

    Si on admets que la résultat de ta transformation xslt est le string Transformed voici mon code:



    string temp = Environment.GetEnvironmentVariable("TEMP");
    XmlDocument XmlSave = new XmlDocument();
    XmlSave.LoadXml(Transformed);
    int cpt = 0;


    try
    {
    XmlSave.Save(temp + "\\form0.pnet");
    }
    catch (Exception)
    {
    bool ok = false;

    while ((ok == false) && (cpt <= 15))
    {
    cpt = cpt + 1;

    try
    {
    XmlSave.Save(temp + "\\form" + cpt + ".pnet");
    ok = true;
    }
    catch (Exception)
    {

    continue;
    }

    }

    if (cpt == 16)
    {
    thisXDocument.UI.Alert("Sie haben zuviel formular geöffnet(16)!");
    return;
    }

    }

    string Recup = temp + "\\form" + cpt + ".pnet";
    // instanciés les paramètre de word
    Word.Application newApp = new Word.Application();
    object o = System.Reflection.Missing.Value;
    object Source = Recup;
    //newApp.Path = @"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE";



    newApp.Visible = true;

    //démarrage de word
    newApp.Documents.Open(ref Source, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o);


    La boucle permet si d'ouvrir un autre document si un est déjà ouvert limite le tout a 16 word ouvert!

    J'espère que ca t'aidera

    ++

    Thierry
    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
Page 1 of 1 (9 items)
Copyright © 2003-2019 Qdabra Software. All rights reserved.
View our Terms of Use.