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 Discussion :

Remplir une table à partir d'un fichier.


Sujet :

ASP.NET

  1. #21
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Pourtant j'ai précisé 4 colonnes je crois...
    Les propriétés qui n'ont pas de valeur n'apparaissent pas. Il faut mettre une valeur à chacune des propriétés des objets que tu ajoutes à la liste.
    Citation Envoyé par SonnyFab Voir le message
    Et esque le fait d'avoir redirigé cela faire un autre repertoire aura un incident majeur?
    Pour le moment on s'en fiche.

    => Etape suivante: ouvre le fichier xml avec Excel.
    => Question: est-ce que la façon dont les données sont présentées te convient?

    A+

  2. #22
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Les propriétés qui n'ont pas de valeur n'apparaissent pas.
    J'ai l'impression que c'est juste les propriétés à valeur numérique qui apparaissent.
    Il faut mettre une valeur à chacune des propriétés des objets
    Je dois t'avouer que là je comprends pas. J'ai pourtant fais pareil avec toutes mes propriétés: les deux strings, l'integer et le décimal. Après la compilation le fichier est bien créé dans le repertoire donnée (chapeau encore!) et j'ai rien inititialisé.

    Et dans le fichier comme j'ai posté précedement celui n'a que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <ArrayOfMonMetier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <MonMetier>
        <Status>0</Status>
        <IPFee>0</IPFee>
      </MonMetier>
    </ArrayOfMonMetier>
    Les propriétés Status et IPFee étant initialisées à 0 dans le fichier, les string n'apparaissent pas.

    Aussi lorsqu'on ouvre le fichier avec Excel, seuls les 0 apparaissent dans deux cellules.

  3. #23
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    J'ai l'impression que c'est juste les propriétés à valeur numérique qui apparaissent.
    Je confirme, je viens de réaliser un test en mettant toutes les propriétés de mon objet metier en integer. Dans le fichier xml alors on obtient:
    <MonMetier>
    <Code>0</Code>
    <Mobile>0</Mobile>
    <Status>0</Status>
    <IPFee>0</IPFee>
    </MonMetier>
    • Je sais pas pourquoi y'a des 0
    • Dois-t-on initialiser ces propriétés?
    • Si oui, a quel niveau du code le fait-on s'il vous plait?
    • Pourquoi mes propriétés en type string n'apparaissent pas?


    Merci bien

  4. #24
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    • Je sais pas pourquoi y'a des 0
    • Dois-t-on initialiser ces propriétés?
    • Si oui, a quel niveau du code le fait-on s'il vous plait?
    • Pourquoi mes propriétés en type string n'apparaissent pas?
    • Parce que un entier ne peut pas être null. Par défaut, il sera initialisé à 0.
    • C'est mieux pour avoir toutes les colonnes
    • Où tu veux mais avant la sérialisation
    • Parce que une chaîne peut être null et que les propriétés dont la valeur est null (non instanciée) n'apparaissent pas puisqu'elle n'existent pas (elles sont null).

    Essayes ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    List<MonMetier> list = new List<MonMetier>();
    MonMetier metier = new MonMetier();
    // Assignement des propriétés
    metier.LeCode = "123";
    metier.Mobile = "Nokia";
    metier.Status = 456;
    metier.IPFee = 753.951;
     
    list.Add(metier);
    list.Add(metier);
    list.Add(metier);
    list.Add(metier);
    Sinon
    Citation Envoyé par Immobilis Voir le message
    => Question: est-ce que la façon dont les données sont présentées dans Excel te convient?

  5. #25
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Question: est-ce que la façon dont les données sont présentées dans Excel te convient?
    Sa dépend, j'aimerais d'abord comprendre la constitution de ce fichier.
    Tout apparait maintenant merci bien, mais dis moi esque les données initialisés là sont des titres dans le tableau?

    J'ai ouvert le fichier sur le server avec Excel en tant que tableau xml

  6. #26
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Sa dépend, j'aimerais d'abord comprendre la constitution de ce fichier.
    C'est un autre problème. Ma question est importante car avant d'aller plus loin dans cette solution, il faut être certain que tes utilisateurs seront prêts à travailler avec un fichier Xml pour créer une liste de portables.
    Citation Envoyé par SonnyFab Voir le message
    Tout apparait maintenant merci bien, mais dis moi esque les données initialisés là sont des titres dans le tableau?
    Les nom des colonnes sont les noms des propriétés. On peut leur en donner d'autres tout en préservant le nom de la propriété. Par exemple, on peut donner comme nom de colonne "Le code" au lieu de "LeCode". On pourra voir cela plus tard.
    Citation Envoyé par SonnyFab Voir le message
    J'ai ouvert le fichier sur le server avec Excel en tant que tableau xml
    C'est ça. Est-ce que cela conviendrait à tes utilisateurs?

  7. #27
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Les nom des colonnes sont les noms des propriétés. On peut leur en donner d'autres tout en préservant le nom de la propriété. Par exemple, on peut donner comme nom de colonne "Le code" au lieu de "LeCode". On pourra voir cela plus tard.
    Oui mais pour être sur que je te suis toujours j'aimerais comprendre exactement. Moi sa va pour l'instant juste que peut-être je me trompe c'est pourquoi je demande : Quand j'ouvre mon fichier je remarque qu'il y'a dans des cellules alignées horizontalement contenant les noms des données initialisées.

    Esque ce sont les noms des colonnes de notre futur tableau?

  8. #28
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    C'est ça. Est-ce que cela conviendrait à tes utilisateurs?
    Je pense que oui.

    PS: Mon fichier est encore sur le server

  9. #29
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Esque ce sont les noms des colonnes de notre futur tableau?
    Par défaut oui. Mais on peut les changer sans modifier la classe MonMetier.

    Est-ce que tu confirmes que tu veux bien faire travailler tes utilisateur avec un fichier Xml?

  10. #30
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Est-ce que tu confirmes que tu veux bien faire travailler tes utilisateur avec un fichier Xml?
    Oui Monsieur le juge, je confirme et je plaide... COUPABLE

    Tant qu'on insère des données dans les colonnes moi sa me va

  11. #31
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Super

    Si on résume, pour le moment ton application génère un fichier Xml dont les éléments correspondent à ta table.
    Si on regarde la liste de trucs à faire:
    1. Créer un objet métier qui reflète la structure de la table => OK
    2. Faire une liste de cet objet => OK
    3. Sérialiser la liste pour obtenir un fichier XML => OK
    4. L'envoyer à l'internaute qui pourra l'ouvrir avec un fichier Excel => En cours
    5. L'internaute le modifie, ajoute des enregistrements sans toucher à la structure => ToBeDone
    6. L'internaute envoi le fichier sur le serveur grâce à un bouton "FileUpload" => ToBeDone
    7. L'application sauvegarde le fichier XML dans le repertoire temporaire => ToBeDone
    8. L'application déserialise le fichier XML en un liste d'objets métiers => ToBeDone
    9. L'application met à jour la base à partir de cette liste => ToBeDone
    Qu'est-ce que tu proposes pour le point 4? Merci de faire une recherche (FAQ) et de me proposer un bout de code. Perso, je sais comment faire, mais j'attend une proposition de ta part. Ça fait un peu scolaire je sais

    A+

  12. #32
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Wahou c'est génial, c'est un honneur pour moi je t'assure.

    Ben j'aime bien le composant fileupload, mais je pense que puisque l'on connait le repertoire sur le server on peut recupérer le fichier par FTP non?

    On l'avait déja fait une fois mais je pense que c'était pour envoyer

  13. #33
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Ok j'ai lancé ma page et j'ai une fonction qui fait le ftp (Tout droit sorti de la FAQ )
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    	Public Shared Function FtpDownload(ByVal uri As Uri, ByVal credentials As NetworkCredential, ByVal dirInfo As DirectoryInfo) As FileInfo
    	Dim fi As FileInfo
    	Dim request As FtpWebRequest = DirectCast(WebRequest.Create(uri), FtpWebRequest)
    	request.Credentials = credentials
    	request.UseBinary = True
    	request.Method = WebRequestMethods.Ftp.DownloadFile
    	'Utilisé pour envoyer la commande "QUIT" au serveur afin de fermer correctement la connexion'
    	request.KeepAlive = False
    	' Taille du tableau servant à stocker les morceaux du fichier.'
    	' On épargne ainsi les ressources du serveur en ne chargeant pas la totalité du fichier.'
    	' Cela permet de transférer rapidement des fichiers volumineux.'
    	Dim buffer As Byte() = New Byte(2047) {}
    	' Variable de mesure de la taille du morceau de fichier lu. Permet d indiquer que le fichier a été lu et écrit en totalité.'
    	' Recupération de la réponse'
    	Using res As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
    		fi = New FileInfo(String.Concat(dirInfo.FullName, uri.Segments(uri.Segments.Length - 1)))
    		Using stream As New BinaryReader(res.GetResponseStream())
    			Using fs As FileStream = File.Create(fi.FullName, buffer.Length, FileOptions.WriteThrough)
    				' Ecriture du flux dans le fichier block' par block
    				Dim block As Integer
    				While ((block = stream.Read(buffer, 0, buffer.Length)) > 0)
    					fs.Write(buffer, 0, block)
    				End While
    			End Using
    		End Using
    	End Using
    	Return fi
    End Function
     
    Public Shared Sub TestFtpDownload(ByVal sender As Object, ByVal e As System.EventArgs)
    	' exemple d utilisation'
    FtpDownload(New Uri("ftp:/192.168.1.*/inetpub/wwwroot/MonFichier.xml"), New NetworkCredential("***", "***"), New DirectoryInfo("C:\Inetpub\wwwroot\"))
    End Sub
     
    	Public Class MonMetier
    	Public Property Code() As [String]
    		Get
    			Return m_Code
    		End Get
    		Set
    			m_Code = Value
    		End Set
    	End Property
    	Private m_Code As [String]
    	Public Property Mobile() As String
    		Get
    			Return m_Mobile
    		End Get
    		Set
    			m_Mobile = Value
    		End Set
    	End Property
    	Private m_Mobile As String
    	Public Property Status() As Integer
    		Get
    			Return m_Status
    		End Get
    		Set
    			m_Status = Value
    		End Set
    	End Property
    	Private m_Status As Integer
    	Public Property IPFee() As Double
    		Get
    			Return m_IPFee
    		End Get
    		Set
    			m_IPFee = Value
    		End Set
    	End Property
    	Private m_IPFee As Double
     
    End Class
     
    	sub Page_load(ByVal sender As Object, ByVal e As System.EventArgs)
     
    		' Creation de la liste d objets'
    Dim metiers As New List(Of MonMetier)()
    Dim metier As MonMetier = New MonMetier()
    'Initialisation'
    metier.Code = " "
    metier.Mobile = " "
    metier.Status = 10000
    metier.IPFee = 0.0000
     
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
    metiers.Add(metier)
     
    ' Creation du serialiseur qui va transformer la liste d objets en Xml'
    Dim serializer As New XmlSerializer(GetType(List(Of MonMetier)))
     
    ' Ouverture d un espace mémoire pour stocker le flux Xml'
    Using mem As New MemoryStream()
    	' Mise en mémoire de la sérialisation de la liste d étudiants'
    	serializer.Serialize(mem, metiers)
     
    	' Creation du fichier
    	Using fs As New FileStream("C:\InetPub\wwwroot\MonFichier.xml", FileMode.Create)
    		' Creation d un flux pour écrire dans le fichier'
    		Using sw As New StreamWriter(fs, Encoding.UTF8)
    			' Ecriture du contenu de la mémoire dans le fichier (la mémoire contient le flux Xml)'
    			sw.Write(Encoding.UTF8.GetString(mem.ToArray()))
    		End Using
    	End Using
    End Using
     
    	  end sub
    Mais je suis surement confronter à un problème de droit sur le server parceque j'obtiends cette erreur:
    System.UriFormatException: Invalid URI: The Authority/Host could not be parsed.
    Lors de l'appel de la fonction TestFtpDownload
    Je vais un peu chercher sur google pour comprendre le problème

  14. #34
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Ben j'aime bien le composant fileupload, mais je pense que puisque l'on connait le repertoire sur le server on peut recupérer le fichier par FTP non?
    Argh... FileUpload c'est pour envoyer un fichier depuis le client vers le serveur. Pour le moment on cherche à faire l'inverse...
    Je viens de trouver une discussion à laquelle tu as participé: http://www.developpez.net/forums/d97...ment-fichiers/ . Tu y trouveras des éléments de réponse.

  15. #35
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Argh... Bon, j'ai pas trouvé de réponse satisfaisante dans la FAQ.

    Comme c'est un bout de code un peu difficile, je te le propose. Au lieu d'écrire le Xml dans un fichier, nous allons directement l'envoyer dans la réponse du serveur au client depuis le flux mémoire.
    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
     
    // Ajout d'un en-tête décrivant le flux envoyé au client
    Response.AddHeader("content-disposition", "attachment; filename=portables.xml");
    Response.ContentType = "text/xml";
     
    // Ouverture de l'espace mémoire
    using (MemoryStream mem = new MemoryStream())
    {
        // Création du XML correspondant à la liste d'objets par la sérialisation
        serializer.Serialize(mem, metiers);
     
        // Création d'un flux d'écriture "sw" pour envoyer le Xml dans la réponse de la page "Response.OutputStream"
        using (StreamWriter sw = new StreamWriter(Response.OutputStream, Encoding.UTF8))
        {
            // Ecriture du contenu de la mémoire "mem" dans le flux "sw"
            sw.Write(Encoding.UTF8.GetString(mem.ToArray()));
        }
    }
    // Fin de la réponse. Le code après n'est pas exécuté
    Response.End();
    Je te laisse placer ce code au bon endroit.

    A+

    [EDIT] Je viens de trouver le lien dans la FAQ: http://dotnet.developpez.com/faq/asp...dcurrentwindow

Discussions similaires

  1. remplir une table à partir d'un fichier .txt
    Par intel42 dans le forum Débuter
    Réponses: 1
    Dernier message: 06/02/2012, 12h01
  2. Remplir une table à partir d'un fichier .txt
    Par deubelte dans le forum Access
    Réponses: 2
    Dernier message: 06/11/2009, 10h58
  3. [AC-2003] Requête pour remplir une table à partir d'un fichier Excel
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/09/2009, 10h52
  4. Réponses: 8
    Dernier message: 11/08/2006, 09h30

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