locked
OpenXML Excel et ASP.net RRS feed

  • Question

  • Bonjour,

     

    Je découvre les fonctionnalités XML d'Office, je m'excuse d'avance si ce sujet a déjà été abordé ou si je me trompe de forum.

    Je disposes d'un fichier XML généré depuis une base SQL et je souhaite créer une ou plusieurs versions "de diffusion" des données sous Word. J'ai tenté via Asp.net de générer le document  mais obtenir un document complet et mis en forme (en tête, images, tableaux ...) me semble lourd.

    Idéalement je voudrai utiliser word pour définir le rendu de mon document et le lier à un fichier xml pour les données.

     

    Mes questions :

    Si je crée mon document docx avec une liaison à un schéma, puis je ensuite via le code ou autre renseigner les zones définies dans Office ?

    Peut on à partir d'un document existant définir une transformation xslt ?

    Si je me plante de direction, comment est il envisageable de procéder ?

     

    Merci d'avance

     

     

    lundi 5 mai 2008 14:15

Réponses

  • Bonjour,

     

    Problème résolu !

     

    What I've Done :

    • Créer un schéma xml,
    • Créer un mappage dans mon modèle Excel à partir du schéma (le schéma permet de spécifier les types de données, ce qui évite la transformation en chaînes de caractères des données lors de l'import),
    • Intégrer dans le package en tant que "CustomXmlPart" mon fichier xml contenant mes données,
    • Créer une procédure vba qui charge les données xml de mon customxmlpart dans le mappage lors de l'ouverture du fichier.

    A ce stade j'ai un fichier unique dont la structure et la mise en forme sont définies grâce à Excel et dont les données sont stockées dans un fichier Excel. Ne me restait qu'à rendre les données dynamiques et à proposer le chargement de ce fichier depuis mes pages asp.net :

     

    • Créer une classe spécifique qui pemet de manipuler les packages et donc mon customxmlpart (merci aux créateurs de la classe packagehelper qui contient tous les éléments nécessaires),
    • Créer une chaîne XML dynamique depuis mes pages ASP.net à partir de mes données SQL,
    • Remplacer le contenu de mon CustomXmlPart par la chaîne XML,
    • Enregistrer une copie du package modifié dans un dossier temporaire du serveur,
    • Rediriger l'utilisateur vers ce fichier Excel,
    • A l'ouverture le code VBA est exécuté et les données mises à jour.

    Les avantages :

    • Je peux modifier la mise en forme, la structure et les formules de mon fichier directement dans Excel,
    • Le fichier est dynamique et disponible sur le serveur sans y avoir installé Excel,

    Les inconvénients :

    • La phase de préparation (création du CustomXmlPart) peut rebuter,
    • Le code VBA dans le classeur (et donc le message d'alerte macro à l'ouverture)
    • Le ménage à faire régulièrement dans le dossier temporaire du serveur

     

    Pour moi c'est tout bon !

     

    PS : Si des extraits de code peuvent vous être utiles, je pourrai les publier à la suite ...

    jeudi 22 mai 2008 12:10

Toutes les réponses

  • Bonjour,

     

    Oublions Word !

     

    Je viens de tester les mappages XML dans Excel qui pourraient bien être une solution à mon problème (merci aux posts précédents).

    Me reste à découvrir comment automatiser au maximum l'import des données depuis mes pages asp.net.

    Si vous avez des pistes ...

     

    Merci d'avance

     

    mercredi 7 mai 2008 06:02
  • Bonjour,

     

    Problème résolu !

     

    What I've Done :

    • Créer un schéma xml,
    • Créer un mappage dans mon modèle Excel à partir du schéma (le schéma permet de spécifier les types de données, ce qui évite la transformation en chaînes de caractères des données lors de l'import),
    • Intégrer dans le package en tant que "CustomXmlPart" mon fichier xml contenant mes données,
    • Créer une procédure vba qui charge les données xml de mon customxmlpart dans le mappage lors de l'ouverture du fichier.

    A ce stade j'ai un fichier unique dont la structure et la mise en forme sont définies grâce à Excel et dont les données sont stockées dans un fichier Excel. Ne me restait qu'à rendre les données dynamiques et à proposer le chargement de ce fichier depuis mes pages asp.net :

     

    • Créer une classe spécifique qui pemet de manipuler les packages et donc mon customxmlpart (merci aux créateurs de la classe packagehelper qui contient tous les éléments nécessaires),
    • Créer une chaîne XML dynamique depuis mes pages ASP.net à partir de mes données SQL,
    • Remplacer le contenu de mon CustomXmlPart par la chaîne XML,
    • Enregistrer une copie du package modifié dans un dossier temporaire du serveur,
    • Rediriger l'utilisateur vers ce fichier Excel,
    • A l'ouverture le code VBA est exécuté et les données mises à jour.

    Les avantages :

    • Je peux modifier la mise en forme, la structure et les formules de mon fichier directement dans Excel,
    • Le fichier est dynamique et disponible sur le serveur sans y avoir installé Excel,

    Les inconvénients :

    • La phase de préparation (création du CustomXmlPart) peut rebuter,
    • Le code VBA dans le classeur (et donc le message d'alerte macro à l'ouverture)
    • Le ménage à faire régulièrement dans le dossier temporaire du serveur

     

    Pour moi c'est tout bon !

     

    PS : Si des extraits de code peuvent vous être utiles, je pourrai les publier à la suite ...

    jeudi 22 mai 2008 12:10