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 :

Problème avec MS Excel


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Points : 44
    Points
    44
    Par défaut Problème avec MS Excel
    Bonjour,
    actuellement je developpe une application en VB.net qui utilise la reference Excel 11.0 pour permettre a mon programme d'exporter des données stockées dans une base de données Access vers Excel ( a des endroits précis cf code : j'utilise les objets excel : excel.Cells(1, 1) par exemple pour ecrire du texte dans la premiere ligne/ premiere colone

    mon code est le suivant :
    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
     
    ----------------------------------------------------------------------
    'CLASSE EXCEL POUR INITIALISER ,EXPORTER ,TERMINER L'OBJET EXCEL
    ----------------------------------------------------------------------
    Imports System.Data.OleDb
    Imports Excel
     
    Public Class Excel
        Shared ProcId As Integer
        Shared wBook As Global.Excel.Workbook
        Shared wSheet As Global.Excel.Worksheet
        Shared excel As Global.Excel.ApplicationClass
     
        Shared Sub Export(ByVal Xlfile As String, ByVal Xlsheet As String, ByVal Dr As OleDbDataReader, ByVal fromCol As Integer)
            initialseExcel()
            wBook = excel.Workbooks.Open(Xlfile)
            wSheet = wBook.Sheets(Xlsheet)
            While Dr.Read
                For i As Integer = 0 To Dr.FieldCount - 1
                    excel.Cells(fromCol, i + 1) = Dr(i).ToString
                Next
                fromCol += 1
            End While
            wBook.Save()
            destroyExcel()
        End Sub
    'initialise excel
        Shared Sub initialseExcel()
            excel = New Global.Excel.ApplicationClass
        End Sub
    'terminer excel "killprocess"
        Shared Sub destroyExcel()
            Dim ExcelProcess() As Process = Process.GetProcesses()
            Dim j As Integer
            For j = 0 To ExcelProcess.GetUpperBound(0)
                If ExcelProcess(j).ProcessName = "EXCEL" Then
                    ProcId = ExcelProcess(j).Id
                    Exit For
                End If
            Next j
            If ProcId = 0 Then Exit Sub
            Process.GetProcessById(ProcId).Kill()
        End Sub
     
    End Class
    puis j'apelle dans mon code d'export vers excel comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                Excel.Export(FileSaver.FileName, "RapObs", DataAccess.getReader("select * from observations", Nothing), 15)
    où dataaccess est une classe avec la methode getReader qui renvoi tout simplement un OledbDataReader


    tout ca c'est que pour vous donner une idée

    le probleme est le suivant :
    au niveau de l'export des données vers excel meme si je specifie le nom du classeur : sheet("RapObs") dans cet exemple le programme ne change pas de classeur ==> resultat les données sont toujours écrites dans le meme sheet !!

    merci de votre aide

    et longue vie a Developpez.net

  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
    Je ne comprend pas : tu sembles confondre sheet et classeur, alors que ce sont 2 choses différentes.
    Donne-nous un exemple concret, ce sera surement plus clair.

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Points : 44
    Points
    44
    Par défaut Probleme résolu
    Bonjour
    OUI en fait je confondait classeur, sheet....... c'etais difficile d'en faire la difference au debut

    la j'ai resolu le probleme , en fait j'avais oublié de changé le nom de la "feuille" ou je travaille puisque mon fichier excel en contient plusieurs , et c'est pour ca que je pouvais ecrire que sur la premiere feuille :

    au cas ou quelqu'un rencontre le meme probleme , le code correct est :

    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
     
    Dim excelApp As ApplicationClass = New ApplicationClass
            Dim excelBook As Workbook
            excelBook = excelApp.Workbooks.Open("C:\test.xls", 0, False, 5, _
            System.Reflection.Missing.Value, System.Reflection.Missing.Value, _
            False, System.Reflection.Missing.Value, System.Reflection.Missing.Value, _
            True, False, System.Reflection.Missing.Value, False)
     
            Dim excelSheets As Sheets = excelBook.Sheets
            Dim wSheet As Worksheet = excelSheets("feuil1")
            Dim cell2 As Range = wSheet.Range("A4:A5", Type.Missing)
            cell2.Value2 = "Text dans feuille 1"
            excelBook.Save()
     
            Dim wSheet2 As Worksheet = excelSheets("feuil1")
            Dim cell As Range = wSheet2.Range("A4:A5", Type.Missing)
            cell.Value2 = "Text dans feuille 2"
            excelBook.Save()
            excelApp.Quit()
    comme ca les 2 feuilles ne sont plus confondus

    Merci

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

Discussions similaires

  1. Réponses: 27
    Dernier message: 13/02/2013, 14h53
  2. Problème avec Find(), Excel Vba
    Par mmmxtina dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/05/2009, 11h57
  3. Problème avec VB excel
    Par eclix3 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/12/2007, 15h24
  4. Problème avec fichier Excel génère erreur
    Par Yanmeunier dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/02/2006, 11h53
  5. Problème avec open() [Excel VBA]
    Par heddicmi dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21

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