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

Silverlight Discussion :

[Silverlight] Générer un fichier CSV


Sujet :

Silverlight

  1. #1
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut [Silverlight] Générer un fichier CSV
    Je souhaite générer un fichier csv et ecrire dedans.
    D'après ce que j'ai compris l'automation COM ne marche que en out of browser ??? car moi je souhaite l'avoir en mode web et en mode OOB aussi.

    ceci est valable pour une application silverlight ?

    http://dotnet.developpez.com/faq/csh...#DotNETExcel02

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par NTIC13 Voir le message
    je souhaite générer un fichier csv et ecrire dedans.
    Un fichier csv est un fichier texte, donc tu dois pouvoir le générer très simplement sans ajouter de librairie tierce (avec un StreamWriter, par exemple).

  3. #3
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Un fichier csv est un fichier texte, donc tu dois pouvoir le générer très simplement sans ajouter de librairie tierce (avec un StreamWriter, par exemple).
    Merci, c'est ce que je pensais effectivement

  4. #4
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Je viens de tenter de faire un export csv avec un StreamWriter et je reçois cette erreur

    System.Security.SecurityException: Opération de fichier non autorisée. L'accès au chemin d'accès 'C:\Classeur.csv' est refusé.
    à System.IO.FileSecurityState.EnsureState()
    à System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
    à System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
    à System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
    à System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
    à System.IO.StreamWriter..ctor(String path)
    à Formulaire_Silverlight.Views.A4_PratiqueDuTiersPayant.btnSuivant_Click(Object sender, RoutedEventArgs e)
    à System.Windows.Controls.Primitives.ButtonBase.OnClick()
    à System.Windows.Controls.Button.OnClick()
    à System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
    à System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
    à MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)}
    et j'ai juste fait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (StreamWriter streamWriter = new StreamWriter(@"C:\Classeur.csv"))
                {
     
                }
    Quelqu'un aurais une idée d'ou peux provenir le problème ?

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu ne peux pas ecrire sur le disque a partir de Silverlight (tout du moins sauf en Full Trust).

    Il faut que tu crees ton fichier en memoire et ensuite proposer a l'utlisateur via un SaveFileDialog.

  6. #6
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Tu ne peux pas ecrire sur le disque a partir de Silverlight (tout du moins sauf en Full Trust).

    Il faut que tu crees ton fichier en memoire et ensuite proposer a l'utlisateur via un SaveFileDialog.
    Alors comment on peux faire passer l'application SL en mode full trust ??

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Il faut passer l'application en Out of Browser et cocher la case dans les propriétés.

  8. #8
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Il faut passer l'application en Out of Browser et cocher la case dans les propriétés.
    merci,
    mais si je veux qu'elle soit en full trust sans passer par OOB ? car mes utilisateurs demarrent l'application en mode web

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par NTIC13 Voir le message
    merci,
    mais si je veux qu'elle soit en full trust sans passer par OOB ? car mes utilisateurs demarrent l'application en mode web
    Le full trust est UNIQUEMENT en out of browser

  10. #10
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Le full trust est UNIQUEMENT en out of browser
    ma question est alors :

    comment sauvegarder un fichier csv sur le disque sans utiliser le SaveFileDialog (pour que ça soit transparent au niveau de l'utilisateur) et en mode web ? J'ai l'impression que SL 4 ne permet pas ce genre d'opération, je me trompe ?!

  11. #11
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par NTIC13 Voir le message
    ma question est alors :

    comment sauvegarder un fichier csv sur le disque sans utiliser le SaveFileDialog (pour que ça soit transparent au niveau de l'utilisateur) et en mode web ? J'ai l'impression que SL 4 ne permet pas ce genre d'opération, je me trompe ?!
    Il est possible de le sauvegarder dans l'isolated storage. Mais le chemin est obscur pour l'utilisateur.
    Sinon effectivement, silverlight n'est VOLONTAIREMENT pas concu pour ca.

  12. #12
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par NTIC13 Voir le message
    ma question est alors :

    comment sauvegarder un fichier csv sur le disque sans utiliser le SaveFileDialog (pour que ça soit transparent au niveau de l'utilisateur) et en mode web ? J'ai l'impression que SL 4 ne permet pas ce genre d'opération, je me trompe ?!

    Tu peux passer par un handler, sur le serveur, qui va générer le CSV et proposer le fichier en téléchargement. L'application SL se contentera d'ouvrir une page Web qui pointe vers ce fichier.

  13. #13
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Tu peux passer par un handler, sur le serveur, qui va générer le CSV et proposer le fichier en téléchargement. L'application SL se contentera d'ouvrir une page Web qui pointe vers ce fichier.
    C'est abstrait pour moi, je ne vois pas comment je puisse faire cette mainpulation

    Citation Envoyé par Nathanael Marchand Voir le message
    Il est possible de le sauvegarder dans l'isolated storage. Mais le chemin est obscur pour l'utilisateur.
    Sinon effectivement, silverlight n'est VOLONTAIREMENT pas concu pour ca.
    Dans mon application j'utilise déja l'isolated storage pour stocker des infos en xml, la il sagit d'une autre fonctionnalitée qui va exposer des données saisies par l'application dans un fichier csv
    Je me dit que je vais utiliser en fin de compte le "SaveFileDialog" et obliger l'utilisateur à indiquer un emplacement de sauvegarde, cependant en SL4 "SaveFileDialog" ne possede pas de methode qui retourne le chemin du fichier que l'utilisateur a choisi,
    J'ai tenté d'utiliser FileInfo pour récupérer le chemin du fichier :

    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
    SaveFileDialog sfd = new SaveFileDialog() 
                { 
                    DefaultExt = "csv", 
                    Filter = "CSV Files (*.csv)|*.csv|All files (*.*)|*.*", 
                    FilterIndex = 1                
                }; 
                if (sfd.ShowDialog() == true) 
                { 
                    using (Stream stream = sfd.OpenFile()) 
                    {
                        FileInfo fi = new FileInfo(sfd.SafeFileName);
                        string CSVfullname = fi.FullName;                                   
                        using (StreamWriter writer = new StreamWriter(stream)) 
                        {
                            //La je met mes writline
                        } 
                        stream.Close(); 
                    } 
                }
    cepdnant la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInfo fi = new FileInfo(sfd.SafeFileName);
    me renvoie "System.Security.SecurityException" en me disant que l'acces au fichier csv est refusé

    une solution ?

    PS : j'ai besoin du chemin du fichier pour l'ouvrir ulterieurement sur une autre page de l'application et ecrire dedans

  14. #14
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Lire la doc!
    http://msdn.microsoft.com/en-us/libr...(v=VS.95).aspx
    L'exemple est pile ce que tu recherches...

  15. #15
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    merci pour l'exemple, je m'etais basé dessus pour écrire mon code que j'ai posté.
    Je me suis peut être mal exprimé :
    comment peut on récupérer le chemin du fichier csv que l'utilsateur a placé quelque part sur son disque pour le stocker dans une variable globale que je vais pouvoir utiliser dans une autre page xaml dans mon application SL ?

  16. #16
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par NTIC13 Voir le message
    merci pour l'exemple, je m'etais basé dessus pour écrire mon code que j'ai posté.
    Je me suis peut être mal exprimé :
    comment peut on récupérer le chemin du fichier csv que l'utilsateur a placé quelque part sur son disque pour le stocker dans une variable globale que je vais pouvoir utiliser dans une autre page xaml dans mon application SL ?
    Ca servira à rien.
    Pour ouvrir un fichier qui se trouve sur le disque de l'utilisateur tu dois toujours passer par un SaveFileDialog.

    Tu ne peux pas l'ouvrir une fois et ensuite le réouvrir à volonté.

  17. #17
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Ca servira à rien.
    Pour ouvrir un fichier qui se trouve sur le disque de l'utilisateur tu dois toujours passer par un SaveFileDialog.

    Tu ne peux pas l'ouvrir une fois et ensuite le réouvrir à volonté.
    merci Skyounet mais c'est vraiement une mauvaise nouvelle. Alors autant qu'expert silverlight que peu tu me conseiller pour que je puisse ecrire un fichier csv qui sera rempli au fur et à mesure qu'on passe de page xaml à une autre page xaml => à chaque clic du bouton suivant d'une page il est rempli

  18. #18
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Bon je commence à devenir expert silverlight
    comme je disais j'utilise deja l'isolated storage dans mon application pour generer un flux xml
    ce que je ne savais pas c'est que je pouvais créer autant de fichier isolated storage que je veux donc j'ai créer un nouveau repertoire que j'ai appellé csv et j'ai porcédé comme ça :

    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
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    string directory = "csv";
                    store.CreateDirectory(directory);
                    string filePath = System.IO.Path.Combine(directory, "Classeur.csv"); //On concatène le nom du fichier et du dossier                        
                    if (!store.FileExists(filePath)) //On vérifie que le fichier n'existe pas déja
                    {
                        IsolatedStorageFileStream File =
                        store.CreateFile(System.IO.Path.Combine(directory, "Classeur.csv")); 
                        File.Close(); 
                    }
     
                    try
                    {
                        using (StreamWriter sw =
                            new StreamWriter(store.OpenFile(filePath,
                                FileMode.Create, FileAccess.Write)))
                        {                        
     
                            sw.WriteLine("Cellule1;cellule2");                         
                        }
                    }
                    catch (IsolatedStorageException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
    corrigez moi si j'ai faux

  19. #19
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Depuis le debut de la conversation je te dis de generer ton fichier csv en memoire et ensuite a la fin de le proposer en telechargement a l'utilisateur.

    Parce que la tu l'as mis dans ton IsolatedStorage mais l'utilisateur n'est pas capable d'aller le chercher facilement sur son disque.

  20. #20
    Membre confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Depuis le debut de la conversation je te dis de generer ton fichier csv en memoire et ensuite a la fin de le proposer en telechargement a l'utilisateur.

    Parce que la tu l'as mis dans ton IsolatedStorage mais l'utilisateur n'est pas capable d'aller le chercher facilement sur son disque.
    merci de ton aide, je vais le créer aussi en mémoire

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Générer un fichier csv via php
    Par ghir_ana dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 29/03/2011, 16h52
  2. Générer un fichier .csv en java
    Par makia42 dans le forum Documents
    Réponses: 2
    Dernier message: 23/04/2010, 11h52
  3. Flash est-il capable de générer un fichier CSV
    Par jagt10 dans le forum Flash
    Réponses: 1
    Dernier message: 19/02/2010, 13h49
  4. [CSV] générer un fichier csv
    Par johnny57 dans le forum Langage
    Réponses: 1
    Dernier message: 16/08/2007, 16h45
  5. [CSV] Générer un fichier CSV
    Par Taz_8626 dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 08h25

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