IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

générer une page Word avec Mvc_dotnet


Sujet :

ASP.NET MVC

  1. #1
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut générer une page Word avec Mvc_dotnet
    bonjour,

    j'ai un petit souci, je souhaite générer un document Word, qui contient les donnés,retourner d'un employé !!
    > c'est comme faire sortir un état .

    j'ai une action avec lequel je cherche des employé , cette action m'affiche l'employé que j'ai cherché , et je souhaite afficher ses information sur une page Word,

    merci de votre réponse
    j'attend votre aide

    bien Cordialement

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 159
    Points : 259
    Points
    259
    Par défaut
    Hello,

    Il faut générer le document Word côté serveur en utilisant OpenXML et le SDK associé. Beaucoup d'infos ici : http://blogs.msdn.com/b/erikaehrli/a...s-on-msdn.aspx

    Bye,

    David Rousset
    Microsoft France

  3. #3
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut un test simple avec une simple Form
    bonjour,
    puisque la dernière intervention ne m'a pas aidé, alors j'ai décidé de faire un test appart.
    et de créer une simple Form avec une zone de texte et un bouton , qui permet de passer ce que j'écris dans la zone de texte à une page Word déjà créer avec un formulaire.
    voici mon code, c'est logique et pourtant il y a un souci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    private void button1_Click(object sender, EventArgs e)
            {
     
     
                try
                {
                    // connexion à Word 
     
                    Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application();
     
     
                    // Afficher à l'utilisateur l'application WORD ou non
                    msWord.Visible = true;
     
                    // déclaration de l objet Missing
                    Object M = Missing.Value;
     
                    // Création d'un nouveau document word
                    Microsoft.Office.Interop.Word.Document newDoc;
     
                    // Attribution du nom au document nouvellement crée
     
                    Object file="c:"+ "fichier" + ".docx" ;
     
     
                    newDoc = msWord.Documents.Open(ref file, ref M, ref M, ref M, ref M, ref M, ref M,
                        ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M);
                    Object name = "nom";
     
                    //remplissage des champs de formulaire
                    newDoc.FormFields.get_Item(ref name).Result = textBox1.Text;
                    // Sauvegarde du document nouvellement crée
                    newDoc.SaveAs(ref file, ref M, ref M, ref M, ref M, ref M, ref M,
                        ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M);
     
                    // on ferme le document WORD (
                    // a utiliser si l’application n’est pas visible)
             // newDoc.Close(ref M, ref M, ref M);
     
                    // on quitte l'application WORD
                    // arrêt de la connexion à l'application 
                    // (a utiliser si l’application n’est pas visible)
             //msWord.Quit(ref M, ref M, ref M);
     
                }
                catch (System.Runtime.InteropServices.COMException error)
                {
                    MessageBox.Show("erreur :" + error.ToString());
                }
     
            }

    > la forme s'affiche bien, avec la zone de texte et quand je saisie un mot et que je clique sur le bouton pour que le mot s'affiche sur le document Word sur le formulaire qui est déjà crée sur Word et ben j'ai un message d'erreur !!!
    le document Word s'ouvre bien mais le mot que j'écris ne passe pas au document .

    !! alors que j'ai bien créé un formulaire sur ce document Word et j'ai bien donné le même non au champ !
    voici un capture d'écran du message d'erreur ( voir pièce jointe )
    je compte sur vous les amis

  4. #4
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Salut,

    Citation Envoyé par mvc_dev Voir le message
    puisque la dernière intervention ne m'a pas aidé, alors j'ai décidé de faire un test appart.
    C'est pourtant la façon la plus propre de procéder...

    Utiliser word en mode serveur peut vite devenir une vraie galère, vu que Word, comme les autres programmes de la suite office, ne sont pas prévus pour fonctionner en mode "serveur"

    !! alors que j'ai bien créé un formulaire sur ce document Word et j'ai bien donné le même non au champ !
    voici un capture d'écran du message d'erreur ( voir pièce jointe )
    Quelle est la ligne exacte ou l'erreur apparait ? Est-ce que tu as un résultat cohérent en mode pas à pas ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut
    bonjour chef, j'attendais votre intervention .
    c'est bon j'ai reglé ce souci , le simple test avec une forme s'est bien passé.
    j'ecris un mot sur la zone de texte et je clique sur le bouton et puis la page Word se charge avec le mot que j'ai saisie dans la zon de texte .
    tout est OK,
    j'ai fais ce test juste pour avoir une idée deja.
    et là j'ai voulu faire la meme chose sur mon projet, c'est a dire de générer une page Word sur laquelle je passe les information que j'ai recuperer d'un employé aprés une recherche ( ce que vous a avez deja vu sur l'autre dicussion) .
    voila, sur la meme vu qui affiche l'employé recherché, j'ai mis un (ActionLink) qui pointe sur une action qui s'appel (etat) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     public ActionResult etat(emp empl)
            {
                //var recherche_emp = (from c in entity.emps
                //                     where c.mat == id.mat
                //                     select c).FirstOrDefault();
     
     
                try
                {
                    // connexion à Word 
     
                    Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application();
     
     
                    // Afficher à l'utilisateur l'application WORD ou non
                    msWord.Visible = true;
     
                    // déclaration de l objet Missing
                    Object M = Missing.Value;
     
                    // Création d'un nouveau document word
                    Microsoft.Office.Interop.Word.Document newDoc;
     
                    // Attribution du nom au document nouvellement crée
     
                    Object file = "g:" + "fichier" + ".docx";
                    // Création du nouveau document WORD
                    //  newDoc = msWord.Documents.Add(ref M, ref M, ref M, ref M);
                    newDoc = msWord.Documents.Open(ref file, ref M, ref M, ref M, ref M, ref M, ref M,
                        ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M);
                    newDoc.Tables[1].Cell(1, 2).Range.Text = empl.nom;
                    // Sauvegarde du document nouvellement crée
                    newDoc.SaveAs(ref file, ref M, ref M, ref M, ref M, ref M, ref M,
                        ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M);
     
                    // on ferme le document WORD (
                    // a utiliser si l’application n’est pas visible)
                    // newDoc.Close(ref M, ref M, ref M);
     
                    // on quitte l'application WORD
                    // arrêt de la connexion à l'application 
                    // (a utiliser si l’application n’est pas visible)
                    //msWord.Quit(ref M, ref M, ref M);
     
                }
                catch (System.Runtime.InteropServices.COMException error)
                {
                    return RedirectToAction("recherche");
     
                }
                return RedirectToAction("recherche");
     
            }
    cette action permet de récupérer tout l'employé et générer une page Word qui a des champ prédéfini et y mettre le nom de l'employé seulement .
    la page Word se charge , mais pas avec le nom de l'employé (il est vide )
    apparemment le souci c'est que l'action ne récupère pas l'employé !!


    j'attend votre aide chef.

    Cdt

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 159
    Points : 259
    Points
    259
    Par défaut
    Citation Envoyé par Philippe Vialatte Voir le message
    Salut,


    C'est pourtant la façon la plus propre de procéder...

    Utiliser word en mode serveur peut vite devenir une vraie galère, vu que Word, comme les autres programmes de la suite office, ne sont pas prévus pour fonctionner en mode "serveur"
    Exact, merci de le rappeler Philippe! Et vu la réponse un peu désagréable du monsieur, je n'ai pas eu envie de l'aider davantage de mon côté.

    Bye,

    David

  7. #7
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut
    peut être que tu as mal compris ma reponse,
    mais ce que j'ai dis c'est :

    puisque la dernière intervention ne m'a pas aidé, alors j'ai décidé de faire un test appart.
    c'est a dire, ce n'est pas ce que je cherchais , c'est tout !

    Cdt

  8. #8
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut
    bonsoir, tout le monde.
    c'est bon j'ai réglé mon souci .
    pour toute personne qui a besoin de savoir comment j'ai fais qu'il le signal ,je suis a votre disposition

    et pour toi davrous ( David) Désolé encore une fois , je crois que c'est juste un malentendu !

    vous êtes plus expérimenté que moi je l'avoue, c'est juste que je n'ai pas compris ta solution, et je suis un peut pressé c'est tout .

    merci pour tout,
    en cas de souci je serai de retour
    Cdt

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 159
    Points : 259
    Points
    259
    Par défaut
    Citation Envoyé par mvc_dev Voir le message
    bonsoir, tout le monde.
    c'est bon j'ai réglé mon souci .
    pour toute personne qui a besoin de savoir comment j'ai fais qu'il le signal ,je suis a votre disposition

    et pour toi davrous ( David) Désolé encore une fois , je crois que c'est juste un malentendu !

    vous êtes plus expérimenté que moi je l'avoue, c'est juste que je n'ai pas compris ta solution, et je suis un peut pressé c'est tout .

    merci pour tout,
    en cas de souci je serai de retour
    Cdt
    Pas de souci. Par contre, si tu as choisi l'option de pilotage de Word via COM (Automation Office), tu auras des problèmes depuis ASP.NET car le modèle objet des composants Office n'est pas thread-safe et non prévu pour tourner dans un environnement serveur. C'est pour cela que je t'indiquais la solution OpenXML qui est peut-être un peu plus complexe à comprendre mais qui est la seule solution viable pour de la génération de documents Office côté serveur.

    Bon courage.

    David

  10. #10
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut
    Citation Envoyé par davrous Voir le message
    tu auras des problèmes depuis ASP.NET car le modèle objet des composants Office n'est pas thread-safe et non prévu pour tourner dans un environnement serveur. C'est pour cela que je t'indiquais la solution OpenXML qui est peut-être un peu plus complexe à comprendre mais qui est la seule solution viable pour de la génération de documents Office côté serveur.
    oui je suis d'accord avec toi, au-fait en testant mon application avec le Word en COM,ben il y a beaucoup de souci, déjà a chaque fois il est obligé d'écraser l'employé affiché et ça mets un temps de retard.
    ( je mets en piece jointe mon résultat )
    votre solution est plus efficace apparemment mais j'avoue que je l'ai pas compris en sachant que je suis nul un peut en anglais .et que j'étais JAVAtard (java) , j'ai rejoint le monde DOTNET il y a 1 mois et demi .
    en tout cas , voici la pièce jointe et si vous voyez que c'est faisable avec votre solution , je le ferai

    Bien Cdt

  11. #11
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Allez, c'est pas si grave si tu as fait du Java avant, personne n'est parfait


    Si tu es un peu nul en anglais, tu peux aussi jeter un oeil sur des sites en français...

    Comme ici, par exemple :
    http://badger.developpez.com/tutorie...-word-openxml/

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VB6: Récupération des meta d'une page HTML avec HTMLDocument
    Par Matounet dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/09/2011, 07h55
  2. imprimer une page word avec de code java
    Par AmineDev9 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 21/09/2008, 20h38
  3. [FPDF] Générer une page PDF avec une image
    Par dudu134 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 27/09/2007, 11h23
  4. Réponses: 16
    Dernier message: 16/08/2006, 15h24
  5. Réponses: 7
    Dernier message: 14/09/2005, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo