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

Windows Forms Discussion :

Exporter une DataTable dans un fichier Excel déjà creer


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Exporter une DataTable dans un fichier Excel déjà creer
    Bonjour,

    Je voudrais exporter le contenu d'un DataTable (ou d'un autre objet style TextBox d'ailleurs) vers un fichier excel déjà existant (une feuille de Devis vierge dans mon cas).

    Pour le transfert des différents contenus de ma DataTable, je pense pouvoir gérer. Il me manque le moyen d'ouvrir cette feuille excel qui existe déjà.

    Quelqu'un connait le moyen ?

  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
    Points : 2 927
    Points
    2 927
    Par défaut
    Tu peux te connecter au fichier Excel avec ADO.Net, comme tu le ferais pour une base de données.

    Dans le cas d'Excel, tu peux utiliser une connexion OleDb. Pour la chaîne de connexion, voir sur le site connectionstrings.com/excel.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    oki j'ai pigé, merci. je connaissais pas ce site. Il est plutôt pratique ^^

    Par hasard, tu saurais si c'est possible de faire la même chose sous openOffice Calc ?

  4. #4
    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
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par pools Voir le message
    Par hasard, tu saurais si c'est possible de faire la même chose sous openOffice Calc ?
    Il y a des liens dans ce sujet : Utiliser openoffice au lieu d'excel. J'espère que ça t'aidera !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Alors voila ce que j'ai fais, et ça ne marche pas, j'ai une erreur sur cnxXL.open() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Sub ConnectXL()
    		'chaine de connexion
    		cheminXL=System.AppDomain.CurrentDomain.BaseDirectory() & "DP09xxxx--A.xls"
    		csXL="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cheminXL '& ;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
    		'la connexion
    		cnxXL=New System.Data.OleDb.OleDbConnection
    		cnxXL.ConnectionString=csXL
    		cnxXL.Open()
    		msgbox("XL ouvert")
    End Sub

  6. #6
    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
    Points : 2 927
    Points
    2 927
    Par défaut
    Mais que fait la côte à la ligne 3 ??
    Ta chaîne de connexion ne doit pas être complète.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Hmmm ouè même en changeant cette petite erreur ça ne marche pas ...

    Je suis désolé de demander ça mais est ce que tu pourrais me donner le code pour se connecter à mon fichier excel ?

    ça se fait pas je sais mais là... je séche total. Même mon amis google m'ont pas aider lol

  8. #8
    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
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par pools Voir le message
    Hmmm ouè même en changeant cette petite erreur ça ne marche pas ...
    Quel est le message d'erreur que tu obtiens ?
    Que te renvoie System.AppDomain.CurrentDomain.BaseDirectory() ?
    Peut-être devrais-tu utiliser Path.Combine() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory(), "DP09xxxx--A.xls")
    Citation Envoyé par pools Voir le message
    Je suis désolé de demander ça mais est ce que tu pourrais me donner le code pour se connecter à mon fichier excel ?
    Ton code semble correct. Je ne peux rien te donner de plus, si ce n'est t'aider à trouver l'origine du problème.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    System.AppDomain.CurrentDomain.BaseDirectory() me renvoie le repertoire courant de mon projet.

    j'ai essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim excel As New Microsoft.Office.Interop.Excel.Application
    Dim workbook As Microsoft.Office.Interop.Excel.Workbooks
    Dim worksheet As Microsoft.Office.Interop.Excel.Worksheet
     
    excel = New Microsoft.Office.Interop.Excel.Application
    workbook = excel.Workbooks.Open("c:\fichier.xls")
    excel.Visible = True
    voilà mes messages d'erreur :
    "Application" is ambiguous in the namespace 'Microsoft.Office.Interop.Excel' (BC30560).
    "Workbooks" is ambiguous in the namespace 'Microsoft.Office.Interop.Excel' (BC30560).
    "Worksheet" is ambiguous in the namespace 'Microsoft.Office.Interop.Excel' (BC30560).
    et quand j'installe la library Excel ça plante aussi ... je comprend pas trop ...

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Alors avec ce code ça marche ! la connexion se fait apparemment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cheminXL = System.AppDomain.CurrentDomain.BaseDirectory() & "DP09xxxx--A.xls"
    csXL = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cheminXL & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
    cnxXL = New System.Data.OleDb.OleDbConnection
    cnxXL.ConnectionString = csXL
    cnxXL.Open()
    Maintenant c'est pour le remplir... vu que j'ai des erreurs BCxxxxxx je peux pas remplir les cellules... je commence à être soulé la lol

  11. #11
    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
    Points : 2 927
    Points
    2 927
    Par défaut
    Commence par retirer toutes ces références Interop, tu n'en as pas besoin pour te connecter en OleDb.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    ben je pense que j'en aurais besoin pour écrire dans le fichier Excel nan ? parce que j'ai testé ses deux codes pour me connecter au fichier excel : la connexion OLEDB qui marche, et la connexion avec interop et tout ça qui marche à moitié vu que j'ai des erreurs bizarres...

    Alors avec cette connexion OLEDB comment écrire dans le fichier Excel ?

  13. #13
    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
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par pools Voir le message
    Alors avec cette connexion OLEDB comment écrire dans le fichier Excel ?
    Avec une requête SQL classique
    Le nom des tables étant le nom des feuilles suivi d'un dollar et le nom des colonnes étant la valeur dans la première ligne du tableau.
    Exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO [Feuil1$] ([COL1], [COL2]) VALUES ('foo', 'bar')

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    ouhh mais c'est bon ça !!!!!!! héhé je teste ça !

    Merci infiniment !!

    Ma syntaxe est-elle bonne ?

    Code Sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO [1$] ([F8]) VALUES ('foo')

    Je pense bien que les VALUES doivent être de type String ça ne devrait pas me poser de problème pour automatiser tout ça !

Discussions similaires

  1. Exporter une requete dans un fichier excel
    Par soleilgym64 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/10/2009, 18h45
  2. Réponses: 6
    Dernier message: 01/04/2009, 14h28
  3. Réponses: 4
    Dernier message: 25/05/2007, 13h10
  4. Réponses: 8
    Dernier message: 23/05/2006, 12h13
  5. Exporter une table dans un fichier excel
    Par david71 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/09/2005, 17h09

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