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 :

Problème d'exportation de données vers excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Par défaut Problème d'exportation de données vers excel
    Bonjour, voila j'ai récupéré un code qui me permet d'exporter des données à partir d'un datagrid vers excel qui est celui-ci

    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
     
            Dim i
            Dim iCnt As Integer
            Dim tamponxls As String
            tamponxls = vbNullString
            iCnt = Me.BindingContext(ObjetDataSet, table).Count
            For i = 0 To iCnt
                If i = iCnt Then Exit For
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 1)) & vbTab
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 2)) & vbTab
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 3)) & vbTab
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 4)) & vbTab
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 5)) & vbTab
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 6)) & vbTab
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 7)) & vbTab
                tamponxls = tamponxls & (Me.DataGridMission.Item(i, 8)) & vbTab & vbCr
            Next i
     
            RichTextBox1.Text = tamponxls
     
            Dim saveFileDialog1 As New SaveFileDialog
            saveFileDialog1.Filter = "Excel|*.xls|Texte|*.txt|Richtext|*.rtf"
            saveFileDialog1.Title = "Sauver le fichier exporter sous ?"
            saveFileDialog1.ShowDialog()
     
            If saveFileDialog1.ShowDialog() = DialogResult.OK Then
                RichTextBox1.SaveFile(saveFileDialog1.FileName, _
                RichTextBoxStreamType.PlainText)
            End If
    Cependant avec ce code j'ai un problème avec les signes & < L'opérateur '&' n'est pas défini pour 'Nothing' et type 'DataGridViewTextBoxCell'. >, j'ai voulu les remplacer par des + mais même problème < L'opérateur '+' n'est pas défini pour type 'DataGridViewTextBoxCell' et chaîne " ". >


    du cou j'ai fait des recherches et j'ai voulu utiliser le code qui est disponible dans la faq vb.net pour exporter des données vers excel, mais j'obtiens cette erreur : "Exception de HRESULT : 0x800A03EC" et cela se passe au moment de la lecture des lignes et des colonnes de mon datagrid.

    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
     
      Dim xlApp As Excel.Application
            Dim xlBook As Excel.Workbook
            Dim xlSheet As Excel.Worksheet
     
            xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
            xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
            xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
     
            ' ici on compte le nombre de lignes et de colonnes du datatable
            Dim nbrLigne As Integer = ObjetDataSet.Tables(table).Rows.Count - 1
            Dim nbrColon As Integer = ObjetDataSet.Tables(table).Columns.Count - 1
            Dim x, y As Integer
     
            For x = 0 To nbrColon
                ' ici on prends le titre des colonnes du datatable
                xlSheet.Cells(1, x + 1) = ObjetDataSet.Tables(table).Columns(x).ColumnName
                ' on mets la première ligne en gras
                xlSheet.Rows(1).Font.Bold = True
     
                ' pour chaque colonne et chaque ligne on transfert les données      
                For y = 0 To nbrLigne
                    xlSheet.Cells(y + 2, x + 1) = DataGridMission.Item(y, x)    ====> çà se passe ici le problème
                Next
            Next
     
            ' ici on affiche les résultat dans excel
            xlSheet.Application.Visible = True
            ' on peut sauvegarder notre document sur le disque
            xlSheet.SaveAs("C:\nom_document.xls")
            ' on quitte l'application et on détruit les objets
            xlApp.Quit()
            xlSheet = Nothing
            xlBook = Nothing
            xlApp = Nothing
    si quelqu'un avait une solution pour une des deux methodes, de préférence celle de la faq qui m'évite de passer par un richtextbox, çà m'aiderait vraiment beaucoup car j'ai pas trouvé de cas similaire sur le net

    d'avance merci

    @++
    dubidon

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    essaye celui là, il est plus rapide :

    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
     
     Dim xlApp As Excel.Application
            Try
                xlApp = GetObject(, "excel.application")
            Catch
                xlApp = New Excel.Application
            Finally
                xlApp.Visible = False
            End Try
     
            'ajout d'une page et sélection 
            Dim xsSoldesComptes5 As Excel.Worksheet = xlApp.Workbooks.Add.ActiveSheet
            'requete serveur 
            Try
                With xsSoldesComptes5.QueryTables.Add(Connection:= _
                "ODBC;DRIVER=SQL Server;SERVER=TONSERVEUR;Integrated Security=SSPI;" & _
                "APP=Microsoft® Query;DATABASE=TABASE;Trusted_Connection=Yes" _
                , Destination:=xsSoldesComptes5.Range("A1"))
     
                    .CommandText = "LA REQUETE QUI REMPLI LE DATAGRID"
                    .Name = "SoldesComptes5"
                    .FieldNames = True
                    .RowNumbers = True
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .BackgroundQuery = True
                    .RefreshStyle = Excel.XlCellInsertionMode.xlOverwriteCells
                    .SavePassword = False
                    .SaveData = False
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .PreserveColumnInfo = True
                    .Refresh(BackgroundQuery:=False)
                End With
                ' affichage 
                xlApp.Visible = True
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Par défaut
    même problème, sauf que là çà me met directement : "Exception de HRESULT : 0x800A03EC"

    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
     
            Dim xlApp As Excel.Application
            Try
                xlApp = GetObject(, "excel.application")
            Catch
                xlApp = New Excel.Application
            Finally
                xlApp.Visible = False
            End Try
     
            'ajout d'une page et sélection 
            Dim xsSoldesComptes5 As Excel.Worksheet = xlApp.Workbooks.Add.ActiveSheet
            'requete serveur 
            Try
                With xsSoldesComptes5.QueryTables.Add(Connection:= _
                "ODBC;DRIVER=SQL Server;SERVER=PORDAM\SQLEXPRESS;Integrated Security=SSPI;" & _
                "APP=Microsoft® Query;DATABASE=DBabcdom;Trusted_Connection=Yes;User ID=sa;Password=abcdom" _
                , Destination:=xsSoldesComptes5.Range("A1"))
     
                    .CommandText = "SELECT LibJour Date ,NbHeures Nombredheure FROM Jour " & _
                     "WHERE NumOrdre = (SELECT NumOrdre FROM ORDRE_MISSION " & _
                     "WHERE NumInt = " & indexint & " " & _
                     "And NumBeneficiaire = " & indexbene & ")"
                    .Name = "SoldesComptes5"
                    .FieldNames = True
                    .RowNumbers = True
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .BackgroundQuery = True
                    .RefreshStyle = Excel.XlCellInsertionMode.xlOverwriteCells
                    .SavePassword = False
                    .SaveData = False
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .PreserveColumnInfo = True
                    .Refresh(BackgroundQuery:=False)
                End With
                ' affichage 
                xlApp.Visible = True
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    @++
    dubidon

  4. #4
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    sur quelle ligne ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Par défaut
    sur la derniere ligne avant le end with

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     .Refresh(BackgroundQuery:=False)
    et si je la met en commentaire, il ouvre un classeur mais il ne contient rien

    @++
    dubidon

  6. #6
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    bah met ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .Refresh(BackgroundQuery:=True)

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

Discussions similaires

  1. [XL-2007] Problème d'exportation de données d'Excel 2007 vers access
    Par soumilo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/04/2012, 15h09
  2. Problème exporter des données vers excel
    Par sky88 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/01/2011, 13h35
  3. [AC-2003] Problème d'export de données vers Excel
    Par moilou2 dans le forum VBA Access
    Réponses: 4
    Dernier message: 22/10/2009, 09h17
  4. exporter des données vers EXCEL!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/11/2005, 15h13
  5. Export de données vers Excel
    Par psykot63 dans le forum Access
    Réponses: 2
    Dernier message: 03/01/2005, 12h04

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