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

C# Discussion :

Générer document à l'execution


Sujet :

C#

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut Générer document à l'execution
    Bonjour,

    J'ai développé une appli de gestion de RDV et j'aimerais créer un document avec les RDV d'une journée précise. Ma question est : quels sont les possibilités?
    J'ai cherché sur le forum et dans des tutos, il y a moyen de travailler avec word, mais ca signifie qu'il faut que word soit obligatoirement installé sur la machine? sinon j'ai entendu parlé du format RTF.
    En fait mon document aurait besoin juste de texte et d'un tableau.
    J'ai vu aussi qu'il était possible de créer des modèles du genre un tableau avec des titres de colonnes, et que je puisse créer un document à partir de ce template, en insérant à l'execution des valeurs dans le document.
    Voilà donc je ne connais pas les différentes solutions, et s'il y en a une meilleure que l'autre.

    Merci d'avance

  2. #2
    Membre chevronné Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Par défaut
    PDF ou HTML.

    Je pencherais plutot pour une page html. C'est simple et ca pourra etre lu par m'importe quel PC, mac, palm, telephone, etc. RTF pourquoi pas, mais je ne suis pas sur que ca marche bien sur des plateformes autre que windows.

    PDF c'est un peu plus complique, je ne suis pas sur que cela soit justifie ds ton cas.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut
    Merci pour la réponse, mais je ne trouve d'explication sur comment créer un document rtf. Mon but serait de créer un document, de le remplir avec les données que j'obtiens à l'execution puis d'imprimer le document.
    Et je n'ai pas besoin de compatibilité avec des OS autres que Windows.

    Sinon j'ai vu aussi la possibilité d'utiliser Crystal Report mais bon je commence déjà avec des erreurs.

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Il faut une présentation particulière ? Sinon, un bête fichier texte brut ne suffirait-il pas ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre chevronné Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Par défaut
    A ma connaissance, il n'y a pas de bibliotheque ds le framework .net pour generer des fichiers RTF.

    Alors si tu veux faire du RTF, il te faut utiliser une library proprietaire ou open source, ou alors generer le contenu de ton fichier a la mano genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fswiss\fprq2\fcharset0 Arial;}}
    {\colortbl ;\red255\green0\blue0;}
    {\*\generator Msftedit 5.41.21.2508;}\viewkind4\uc1\pard\f0\fs20\par
    Hello World\par
    \par
    \cf1\f1 Hello World Red\par
    \cf0\f0\par
    \b Hello World Bold\b0\par
    \par
    }
    Ca me parait pas si complique de le faire a la mano, tu generes ton "template" avec wordpad, puis tu remplaces des tags par du contenu genre "${TITLE}" par ton titre, etc.

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut
    Je peux opter pour la solution à la main mais je vois pas du tout par ou commencer. Deja, en faite le contenu de mon document n'est pas vraiment fixe. En fait, chaque jour il peut y avoir un nombre différent de RDV donc je ne sais pas si c'est possible de faire ca en RTF et si c'est possible je ne vois pas comment réaliser le modèle.
    Aussi, il faudrait que ce soit des caractères unicode vu que dans le document, il peut y avoir plusieurs langues.

    Merci

  7. #7
    Membre chevronné Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Par défaut
    Tu commences par creer ton "modele" avec wordpad. Tu sauves ton fichier. Puis en C# dans un 1er temps tu lis le contenu de ton fichier .rtf "modele" en utilisant une FileStream et un StreamReader. Tu mets le contenu ds une string. Puis ds un 2eme temps tu ouvres une autre FileStream + StreamWriter en mode Create pour ecrire ds un nouveau fichier le contenu de ta string.

    Au final tu obtiens une copie de ton fichier initial ds un autre fichier.

    Mais plus tard il faudra que tu modifies ta string avant d'enregistrer pour apporter les modifs voulu (ajout du tableau, etc).

    Rtf gere l'unicode.

  8. #8
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut
    Merci pour la réponse.
    Donc voilà j'arrive à récupérer la structure du document à partir de wordpad, maintenant j'ai un problème au niveau de l'encodage avec le streamwriter.
    Quand j'ecris la string correspondant aux caractéres spéciaux de RTF, j'utilise le codage ASCII.
    Quand j'ai besoin d'ecrire des caractères unicode à partir de mon appli, je ferme le flux précédent et je le réouvre avec l'encodage unicode.
    Mais à la fin, quand j'ouvre le fichier que j'obtiens avec WORDPAD, à la place des caractères unicode, j'ai des caractères bizarres, en gros le fichier n'est plus en unicode.
    Apparement, il garde le codage du dernier streamwriter créé qui est dans mon cas ASCII(pour fermer le fichier RTF avec les caractères spéciaux nécessaires).

    Peut etre que ce que je fais n'est pas bon, qu'il faut ouvrir le fichier avec l'encodage ASCII à chaque fois mais dans ce cas comment entrer des caractères unicode?

    Merci

  9. #9
    Membre chevronné Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Par défaut
    D'apres ce que j'ai vu vite fait sur le format RTF, les caracteres non ASCII sont codes: \uFFFF (\u suivi du code hexa du caractere special sur 16 bits)

  10. #10
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut
    Ah c'est bien ce que je voyais quand j'ecrivais des caractères unicode sur le wordpad. Merci, je vais chercher de ce cotéé la

  11. #11
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut
    Bon finalement c'est galere surtout pour la mise en forme, si c'est une langue qui s'ecris de droite à gauche et tout ca.
    Est ce que l'utilisation de Crystal Report est possible pour mon cas, et est ce qu'elle est simple ?

  12. #12
    Membre chevronné Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Par défaut
    Si tu dois gerer les langues right to left ca sera galere ds tous les cas. Mais je crois que le rtf supporte le right to left. Voici le code en tout cas pour gerer les caracteres non ASCII, si tu bloques la dessus:

    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
            public static string ToRTFUnicode(string s)
            {
                StringBuilder sb = new StringBuilder();
                foreach (char c in s)
                {
                    int decimalValue = (int)c;
                    if (c > 255)
                        sb.AppendFormat("\\u{0}?", decimalValue);
                    else
                        sb.Append(c);
                }
                return sb.ToString();
            }
     
            public static void Main(string[] args)
            {
                string rtfTemplate = "template.rtf";
                string fileContent = File.ReadAllText(rtfTemplate);
                fileContent = fileContent.Replace("[DYNAMIC:TITLE]", 
                    DateTime.Today.ToLongDateString());
                fileContent = fileContent.Replace("[DYNAMIC:BODY]",
                    ToRTFUnicode("10€"));
                File.WriteAllText("file.rtf", fileContent);
     
            }
    Je sais gerer le right to left en html/css mais ca demande qq petites gymnastiques aussi.

  13. #13
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut
    Merci pour le code, ca a réglé le problème. Maintenant il me reste le problème de l'impression qui à ce que j'ai compris pose problème pour le RTF. Je vais faire un autre post, vu que c'est un autre sujet.

    Merci

  14. #14
    Membre chevronné Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Par défaut
    Tu as essaye ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.FileName = "Wordpad";
    startInfo.Arguments = "file.rtf";
    startInfo.Verb = "print";
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    Process.Start(startInfo);

  15. #15
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Par défaut
    J'ai vu cette solution sur un forum, mais bon ca pose comme condition que wordpad doit etre installé sur la machine(c'est vrai qu'il est sur toutes les machines avec Windows) et qu'il fonctionne.
    Donc, en conclusion, il n'y a pas d'outil sur le framework qui gére le RTF.

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

Discussions similaires

  1. Générer documentation HTML
    Par alex_vino dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 24/08/2011, 15h35
  2. [XSLT] Générer Document HTML via un XSL
    Par dahu17 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/09/2007, 16h51
  3. [VS.Net] Comment générer un fichier executable ?
    Par tifawete dans le forum Visual Studio
    Réponses: 2
    Dernier message: 21/07/2006, 16h51
  4. Générer documents à partir de XML
    Par blastobi dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 05/04/2006, 11h37

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