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 :

[VB.NET] Transférer les données d'un dataset vers excel ??


Sujet :

Windows Forms

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [VB.NET] Transférer les données d'un dataset vers excel ??
    Bonjour le forum,

    J’ai un formulaire qui contient 5 boutons.

    Quand je clic sur un de ces 5 boutons, un autre WindowsForm s’ouvre et me montre un DataGrid alimenté par un DATASET lui-même alimenté par une base de données Access.

    Mon DataGrid me montre donc tous les enregistrements de ma table Access.

    J’aimerais maintenant transférer les données se trouvant dans mon DataGrid (alimenté par le dataset) dans un document Excel.

    Ma question est la suivante :

    Est-il possible de faire cela avec le Dataset ?

    Genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
     
            appexcel = CreateObject("Excel.application")
            wbexcel = appexcel.Workbooks.Open("z:\2e BA 1sess 05-06")
            appexcel.Visible = True
     
     
            appexcel.Cells("1,1") = dtr.Item("NomBA2s1)
    dtr est la variable de dataraw

    J’aurais donc voulu que la première valeur de NomBAs1 soit inscrits en A1 (en Excel) mais ça ne fonctionne pas.

    Pensez-vous donc que c’est possible de faire ce genre de manipulation avec un dataset et si oui comment ?

    Merci d’avance pour votre aide et bon Week-End.

    bgs

  2. #2
    Membre actif Avatar de neuropathie
    Inscrit en
    Janvier 2005
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 223
    Points : 201
    Points
    201
    Par défaut
    C'est faisable avec un dataset, essaie ce code:

    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
     
    'Mtnt crée une application vb.net
    'Dans les références COM ajoute: MIcrosoft Excel 10.0 Object library.
     
    'Mtnt sur le code de loading de ta form colle le code ci dessous
     
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            fncExcelExport("select emp_id,fname from pubs..employee")
        End Sub
        Private Function fncExcelExport(ByVal strSql As String)
            Dim dsExcelExport As New System.Data.DataSet
            Dim daExcelExport As System.Data.SqlClient.SqlDataAdapter
            Dim Excel As New Excel.Application
            Dim intColumn, intRow, intColumnValue As Integer
            Dim strExcelFile As String
            Dim strFileName As String
            Dim conCurrent As New SqlClient.SqlConnection
            conCurrent.ConnectionString = "data source=;initial catalog=pubs;User ID=sa;Password="
            daExcelExport = New System.Data.SqlClient.SqlDataAdapter(strSql, conCurrent)
            daExcelExport.Fill(dsExcelExport)
            Dim strAppPath = System.Reflection.Assembly.GetExecutingAssembly.Location.Substring(0, System.Reflection.Assembly.GetExecutingAssembly.Location.LastIndexOf("\") + 1)
            With Excel
                .SheetsInNewWorkbook = 1
                .Workbooks.Add()
                .Worksheets(1).Select()
                'Pour afficher le nom de la colonne dans le fichier excel.
                For intColumn = 0 To dsExcelExport.Tables(0).Columns.Count - 1
                    .Cells(1, intColumn + 1).Value = dsExcelExport.Tables(0).Columns(intColumn).ColumnName.ToString
                Next
                'Pour remplir les lignes sur le fichier excel.
                For intRow = 0 To dsExcelExport.Tables(0).Rows.Count - 1
                    For intColumnValue = 0 To dsExcelExport.Tables(0).Columns.Count - 1
                        .Cells(intRow + 1, intColumnValue + 1).Value = dsExcelExport.Tables(0).Rows(intRow).ItemArray(intColumnValue).ToString
                    Next
                Next
                'strFileName = InputBox("Veuillez entrer le nom du fichier.", "Swapnil")
                strExcelFile = strAppPath & "employee"
                .ActiveWorkbook().SaveAs(strExcelFile)
                .ActiveWorkbook.Close()
            End With
            MessageBox.Show("Création du fichier réussie.", "Exportation Réussie", MessageBoxButtons.OK, MessageBoxIcon.Information)
    NormalExit:
            Excel.Quit()
            Excel = Nothing
            GC.Collect()
            Exit Function
        End Function

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour neuropathie,

    Merci pour ta réponse et le temps que tu m’as consacré.

    Je ne comprends malheureusement pas grand-chose au code que tu m’as envoyé.

    Voici mon code :

    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
    #Region "Importation des espaces de noms"
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    #End Region
    Public Class frmBA2
        Inherits System.Windows.Forms.Form
     
    #Region " Code généré par le Concepteur Windows Form "
     
        Public Sub New()
            MyBase.New()
     
        'déclaration de la connexion
        Public cnn As OleDbConnection
        'Déclaration de la variable pour le dataadapter
        Public dta As OleDbDataAdapter
        'Déclaration de la variable pour la commande 
        Private cmd As OleDbCommand
        'Déclaration de la variable pour le dataset
        Private dts As New DataSet
     
        'Déclaration de la variable pour la requête
        Private sql As String
     
        'Déclaration de la variable pour la datatable
        Private dtt As DataTable
     
        'Déclaration de la variable pour le datarow
        Private dtr As DataRow
     
        'Déclaration de la variable pour le Nº de l’enregistrement 
        Private rownum As Integer
     
        'Déclaration de la variable pour la connectionstring
        Private cnxstr As String
     
        'Déclaration de la variable pour le commandbuilder
        Private cmdb As OleDbCommandBuilder
        Private Sub frmBA1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
     
     
     
            'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne
            cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\delibes.mdb;"
            cnn = New OleDbConnection
            cnn.ConnectionString = cnxstr
            cnn.Open()
            'Création de la requête sql
            sql = "select [MatriculeBA2s1],[NomBA2s1],[PrenomBA2s1],[BIOLJ201BATHTP2s1],[BMOLJ201BA2s1], MEDIJ201BA2THs1,BA2TRANJ201THs1,PHARJ201BA2THs1,CHIMJ201BA2THs1,TRANJ202BA2s1,STATJ201BA2THEXs1,INFOJ201BA2EXs1,PHARJ202EX,BA2BMOLJ201BA2TPs1,BA2BMOLJ202THS1,BA2BMOLJ202TPS1,MEDIJ201BA2EXs1,PHARJ201TPS1 from BA2_S1 ORDER BY [NomBA2s1]"
     
            'Création de la commande et on l'instancie (sql) 
            cmd = New OleDbCommand(sql)
     
            'Création du dataadapter (dta) et on l'instancie (cmd)
            dta = New OleDbDataAdapter(cmd)
     
            'On instancie la commande (cmd) à la connection (cnx) 
            cmd.Connection() = cnn
     
            'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
            dta.Fill(dts, "BA2_S1")
     
            'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)                 
            dtt = dts.Tables("BA2_S1")
     
            DataGrid1.SetDataBinding(dts, "BA2_S1")
     
            dts.WriteXml("c:\datasetenXML.xml")
     
        End Sub
    Je me demandais si en cliquant sur un bouton, on ne pourrait pas (par rapport au code ci-dessus) utiliser ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim appexcel As Excel.Application
            Dim wbexcel As Excel.Workbook
     
            appexcel = CreateObject("Excel.application")
            wbexcel = appexcel.Workbooks.Open("z:\2e BA 1sess 05-06")
            appexcel.Visible = True
     
            appexcel.Cells("1,1") = dtt.Rows(rownum).Item("MatriculeBA2s1")
        End Sub
    End Class
    Je donnerais à la cellule A1 la valeur de « MatriculeBA2s1 ».

    Malheureusement, ça ne fonctionne pas.

    Excel ne s’ouvre pas et je n’ai aucun message d’erreur.

    Est-ce une bonne piste pour remplir ma sheet excel ?
    Merci d’avance pour votre aide.
    Bgs

  4. #4
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-bonjour le forum,

    Je confirme que ce que j'ai écris est correct.

    J'avais juste mis l'évènement sur un monvais bouton.

    Voilà encore une étape franchie et j'espère que le code que j'ai mis pourra aider d'autre personnes.

    A bientôt et bon fin de Week-End.

    bgs

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

Discussions similaires

  1. comment exporter les données d'un jtable vers excel
    Par papypolo22 dans le forum NetBeans
    Réponses: 3
    Dernier message: 23/11/2010, 19h13
  2. [AC-2007] Transférer les spreadsheet d'access VBA vers Excel
    Par zibi7 dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/08/2009, 18h07
  3. Exporter les données d'une flexgrid vers Excel
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/08/2006, 18h06
  4. Transférer les données d'une JTable vers une autre
    Par rollbich dans le forum Composants
    Réponses: 4
    Dernier message: 19/01/2006, 23h22
  5. Transférer les données d'une base d'un coup
    Par martonpylon12 dans le forum Access
    Réponses: 6
    Dernier message: 12/10/2005, 20h43

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