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

VB.NET Discussion :

parcourir document xls


Sujet :

VB.NET

  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut parcourir document xls
    Bonjour a tous, voila, je développe actuellement une application en vb.net sous visual studio 2003, et je cherche a faire une application qui permet de parcourir l'intégralité d'un tableau xls, de traiter les informations contenues dedans et de les enregistrer dans une base de données access. Le probleme est que je n'arrive pas a parcourir mon tableau, alors que ma connection marche ( a priori ) voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
           Dim cn As New OdbcConnection("Driver={Microsoft Excel Driver (*.xls)}; DBQ=" & "C:\base de données\DDASS.xls")
           cn.Open()
    'ici c'est un peu le bordel...je ne sait pas quoi mettre
           cn.Close()
    quelqu'un pourrait m'indiquer comment faire, meme si c'est juste une piste ?? je ne trouve pas de site qui traite de ce sujet...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Si je ne m'abuse utiliser un fichier Excel comme une base de donnée (ce que tu fait dans ton exemple), ne permet que d'atteindre les zones nommé au sein de ce fichier, qui sont géré comme des tables de base de donnée.

    Donc si tu souhaite lire le contenu d'un fichier xls sans avoir de zone nommé à l'interieur spécifique à ce que tu souhaite recuperer, oublie cette technique, et utilise plutot l'api Excel pour ouvrir le fichier réellement et lire les données directement via les objets fait pour.

  3. #3
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    Bonjour,

    La manipulation de fichiers Excel passe par les fonctionnalités d'Automation Office,
    Tape Automation Excel ou Office ou Word dans Google...

    voilou

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    En fait, c'est bon j'ai reussi a trouver un petit programme qui me permet de considerer mon tableau excel comme un base de donnée. VOs solutions doivent marcher (je ne les ait pas testé), mais pour faire mon traitement, il est plus simple d'utiliser un datagrid...

    merci quand meme

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Points : 110
    Points
    110
    Par défaut
    Salut boubounne,

    J'ai été confronté au même problème que toi il n'y à pas si longtemps.
    Sauf que moi j'ai utilisé l'automation Excel.

    Tu peux m'en dire plus sur ton programme s'il te plait ? Comment s'appelle-t-il ? Gratuit ? C'est un programme, ou bien une dll ?

    Merci.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    non c'est quelques lignes de programme dans vb.net que j'ai remis a ma sauce, cela me permet de mettre mon fichier excel dans un datagrid et de le manipuler, ce qui me facilite l'enregistrment des données dans ma base de données..
    voici les commandes :
    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
     
    Imports System
    Imports System.Drawing
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.IO
     
    Dim Drow As DataRow
    Dim dset As New DataSet
    Dim Drow As DataRow
    Dim MyCommand As System.Data.OleDb.OleDbCommand
    Dim MyConnection As System.Data.OleDb.OleDbConnection
    Dim adapter As New OleDbDataAdapter
    Dim CmdBuild As New OleDbCommandBuilder
    Dim i As Integer
     
    try
     
     MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source= " & Txt_chemin.Text & " ;Extended Properties=Excel 8.0;")
     
    MyCommand = New OleDbCommand("select * from table")
     
    adapter.SelectCommand = MyCommand
     
    MyCommand.Connection = MyConnection
     
    adapter.Fill(dset, "table")
     
    dgrid_exel.SetDataBinding(dset, "table")
     
    Catch ex As Exception
                MsgBox(ex.Message)
    End Try
    pour indication, Txt_chemin.Text est le chemmin d'acces de ton fichier excel, et table, c'est une petite manip a faire avant :
    tu ouvre ton fichier excel, tu selectionne les ligne que tu veut afficher, ensuite tu va dans le menu insertion->nom->définir
    et tu met le nom que tu veux, pui tu le remplace dans ton programme.
    je suis en train de chercher comment on peut faire ca automatiquement mais c'est la prise de tete....

  7. #7
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    D'ailleur, si quelqu'un a une idée, le tout est de parcourir en intégralité un tableau excel, et de définir un nom de "zone" si je peut appeler ca comme ca, je ne connait pas le nom exact, mais la manip est expliqué au dessus.

  8. #8
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    sinon, j'ai trouvé ca aussi :
    http://www.dotnet-tech.com/tutoriels/rapport-excel/

    ca a l'air pas mal, mais c'est peut etre imcomplet..

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Points : 110
    Points
    110
    Par défaut
    Merci pour le lien, j'vais y jeter un coup d'oeil !!!

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par boubounne
    D'ailleur, si quelqu'un a une idée, le tout est de parcourir en intégralité un tableau excel, et de définir un nom de "zone" si je peut appeler ca comme ca, je ne connait pas le nom exact, mais la manip est expliqué au dessus.
    C'est ce que je te disais en parlant des zones nommées.

    Est ce que tes infos sont toujours à la même place ou est ce qu'il faut faire une recherche ?

  11. #11
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    en fait, il faut nommé ta zone, puis apres tu l'utilise comme une table de base de données. Je sait c'est un peu chaotique mais ainsi tu peu voir les info dans ton datagrid, maintenant, je suis toujours en train de bosser sur la maniere pour que la selection du tableau se fasse en automatique, mais ce que je sait c'est que tu peut ajouter des lignes dans cette zone, ou en supprimer, mais je n'ai pas etudié plus que ca le code. si tu le veut, le voila :
    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
     
    Private Sub cmd_enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_enregistrer.Click
            With dset
                ' Création de la nouvelle ligne 
                Drow = dset.Tables("perssonne").NewRow
                'affectation des valeurs
                Drow("nom") = txt_nom.Text
                Drow("prenom") = txt_prenom.Text
                ' Ajout de la ligne à la table
                .Tables("perssonne").Rows.Add(Drow)
            End With
            CmdBuild = New OleDb.OleDbCommandBuilder(adapter)
            adapter.Update(dset, "perssonne")
            MsgBox("Enregistrement ajouté avec Succés...", MsgBoxStyle.Information, "Information")
        End Sub

  12. #12
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    voila pour ceux qui veulent, je vient de comprendre comment lire les cases du tableau excel... (enfin )
    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
     
    Imports System
    Imports System.Data
    Imports System.Web
    Imports System.IO
    Imports Microsoft.Office.Interop
    Imports System.Data.Common
    Imports System.Resources
     
    public sub test_de_lecture()
     
    Dim oExcelApp As Excel.ApplicationClass
            Dim oBooks As Excel.Workbooks
            Dim oBook As Excel.Workbook
            Dim oSheet As Excel.Worksheet
            Dim oRien As Object
            Dim i As Integer
            Dim colonne As Integer
            Dim ligne As Integer
            Dim valeur As Object
     
            oRien = System.Reflection.Missing.Value
            oExcelApp = New Excel.ApplicationClass
            'j'affiche mon tableau excel
            oExcelApp.Visible = True
            'j'ouvre le tableau
            oBooks = oExcelApp.Workbooks
            oBook = oBooks.Open("c:\test.xls", oRien, oRien, oRien, oRien, oRien, oRien, oRien, oRien, oRien, oRien, oRien, oRien, oRien, oRien)
            oSheet = oBook.Worksheets(1)
     
            'insertion dans la case 5,5 de la valeur "test"
            oSheet.Cells(5, 5) = "test"
     
            'je recupere ici les valeur de la case activée
            colonne = oSheet.Cells.Column
            ligne = oSheet.Cells.Row
            MsgBox(colonne & " " & ligne)
     
            'je recupere les données de la case 5,5 ou il y a test
            valeur = oSheet.Cells(5, 5).Value2
            MsgBox(valeur.ToString)
     
            'je quitte excel
            oExcelApp.Quit()
     
    end sub
    si ca peut aider des personnes, en cas de besoin sur le sujet, n'hesiter pas a poster a la suite, je continu a bosser dessus (meme si je serais un peu moin present)

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Parfais, je vois que tu as fait exactement comme j'avais proposé dans ma première reponse, utiliser les dll excel :p

  14. #14
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    ben oui, mon chef m'a demandé de changer ma maniere de programmtion, au depart, je voulais faire un datagrid avec les info du tableau excel, mais je n'arrivais pas a faire la selection de la zone automatiquement.... donc j'ai du m'adapter, et cela convient tres bien a mon chef... mais c'est vrai que ta reponse est bien pratique,
    merci

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

Discussions similaires

  1. [SP-2010] Document xls perdu
    Par tito55 dans le forum SharePoint
    Réponses: 3
    Dernier message: 23/07/2012, 11h38
  2. Stockage de documents (doc,pdf,xls) sous mysql
    Par sessime dans le forum Bases de données
    Réponses: 7
    Dernier message: 21/09/2010, 16h01
  3. Réponses: 0
    Dernier message: 29/06/2010, 10h26
  4. Composer un document xls
    Par olibara dans le forum Conception
    Réponses: 9
    Dernier message: 28/11/2009, 06h03
  5. Répertoire d'ouverture d'un document.xls
    Par pasclaire dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/02/2009, 10h41

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