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 :

Access vers excel "sans avoir excel installer"


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut Access vers excel "sans avoir excel installer"
    Bonjours

    je cherche a faire l'exportation d'une table access vers excel

    sans avoire forcement excel installer vu que j'ouvre pas forcement le fichier excel


    si quelqu'un peut m'aider merci bcp

  2. #2
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Je sais que c'est possible en utilisant le nouveau format openXml d'excel 2007 (ce sont les documents .xlsx).
    Si tu googles OpenXMl et template tu trouveras un tutoriel pas mal sur le site de crosoft.
    Si tu as des problèmes reviens poster par ici, je me suis pas mal pris la tête là dessus et je pourrais peut être t'aider.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    merci de ta reponse
    j'ai lu :
    il est maintenant possible de créer ou de manipuler des documents Office sur un serveur, sans avoir à y installer Office avec le format openxml

    donc c'est bien ce que je recherche le seul souci que j ai pris bcp de temps a ecrire mon programme et je veut pas tout refaire

    voici mon code

    ' Déclaration du fichier Excel à ouvrir
    Dim fichierExcel As Excel.Workbook
    '-----------------------------
    'Dim appExcel As New Excel.Application
    Dim appExcel As New Excel.Application

    ' Pour éviter les questions!!!
    appExcel.AlertBeforeOverwriting = False
    appExcel.DisplayAlerts = False


    c'est a l'appel de New Excel.Application qui plante si j'ai pas excel ya t il moyen de pas tout refaire pour integrer le format openxml

  4. #4
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Là par contre non.
    Le format OpenXml est complètement différent de l'ancien et Microsoft n'a pas encore fait grand chose pour permettre de l'utiliser comme tu souhaites le faire.
    Tu as beaucoup de données à exporter (Nombre de cellules à modifier) ?
    Je peux te donner des pistes pour accélérer les choses.
    Si tu ne veux pas installer excel, j'ai bien peur que ton code soit à jeter...

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    #Region " génération du fichier Excel "
        Public Sub generateExcel(ByRef table As String, ByRef rs As ADODB.Recordset, ByRef appExcel As Excel.Application)
            Try
                'On Error Resume Next
                Dim formExcelProgression As FS_traitementProgession
                Dim col(300) As String
                Dim i As Short
                Dim j As Short
                Dim k As Short
                Dim CurrentPage As Short = 1
     
     
     
     
                ' Récupération du nombre de colonnes
                Dim nbColonnes As Short
                Dim lettre As String
                nbColonnes = rs.Fields.Count
     
                For i = 0 To 25
                    col(i) = Chr(65 + i)
                Next i
                k = 26
                For i = 0 To 7
                    For j = 0 To 25
                        col(k) = Chr(65 + i) & "" & Chr(65 + j)
                        k = k + 1
                        If k > nbColonnes Then
                            Exit For
                        End If
                    Next j
                    If k > nbColonnes Then
                        Exit For
                    End If
                Next i
     
                'préparation de la barre de progression
                formExcelProgression = New FS_traitementProgession
                'Dim nbEnr As Short
                'Dim step_Renamed As Short
                Dim nbEnr As Long
                Dim step_Renamed As Long
                nbEnr = 1
                rs.MoveFirst()
                While Not (rs.EOF)
                    nbEnr = nbEnr + 1
                    rs.MoveNext()
                End While
     
                formExcelProgression.ProgressBar1.Value = 0
                formExcelProgression.ProgressBar1.Max = nbEnr
                step_Renamed = 1
     
                'Attribut de visibilité d'Excel
                FctBase.Pause(1)
                appExcel.Visible = False
                formExcelProgression.Show()
     
     
                formExcelProgression.tick(step_Renamed)
                rs.MoveFirst()
                Dim caseCible As String
     
                While Not (rs.EOF)
                    If i = 0 Then
                        If CurrentPage > appExcel.Worksheets.Count Then
                            appExcel.Worksheets.Add(After:=appExcel.Worksheets(appExcel.Worksheets.Count))
                        End If
                        For i = 0 To (nbColonnes - 1)
                            lettre = col(i)
                            appExcel.Worksheets(CurrentPage).Range(lettre & "1").Value = rs.Fields(i).Name
                        Next i
                        i = 3
                    End If
     
                    For j = 0 To (nbColonnes - 1)
                        If Not IsDBNull(rs.Fields(j).Value) Then
                            caseCible = col(j) & "" & i
                            appExcel.Worksheets(CurrentPage).Range(caseCible).Value = rs.Fields(j).Value
                        End If
                    Next j
                    i = i + 1
                    formExcelProgression.tick(step_Renamed)
                    'Déplacement du curseur
                    rs.MoveNext()
                    If (i = 30000) Then
                        CurrentPage = CurrentPage + 1
                        i = 0
                    End If
                End While
     
                formExcelProgression.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message + " (ModExcel87) ")
                MessageBox.Show(ex.ToString())
                Depart.FormMenuPrincipal.Cursor = Windows.Forms.Cursors.Default
                Exit Sub
            End Try
        End Sub
    #End Region
     
    End Module

    ce code est appelle a la suite de

    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
     
     
     Try
                Dim rs As New ADODB.Recordset
                Dim fileName As String
                Dim fileNameChem As String
                  Depart.FormMenuPrincipal.Cursor = System.Windows.Forms.Cursors.WaitCursor()
     
                ' Déclaration du fichier Excel à ouvrir
                Dim fichierExcel As Excel.Workbook
                '-----------------------------
                'Dim appExcel As New Excel.Application
                Dim appExcel As New Excel.Application
     
                ' Pour éviter les questions!!!
                appExcel.AlertBeforeOverwriting = False
                appExcel.DisplayAlerts = False
     
                'on exporte TOUTE la table  dans un fichier xls
     
                ' Ouverture du fichier Excel
     
     
                fileName = Depart.cheminBD & "\rep\" & TPeriode.Text & TAnnee.Text & ".xls"
     
     
                fichierExcel = appExcel.Workbooks.Add
                Depart.connecterBD()
                rs.Open("SELECT * FROM imp_prov", _
                    Depart.ConnectionBd, ADOR.CursorTypeEnum.adOpenForwardOnly, ADOR.LockTypeEnum.adLockReadOnly)
     
                ' remplissage du fichier excel
                If Not (rs.EOF And rs.BOF) Then
                    ' Ecriture des en-têtes de colonnes et des valeur
                    ModExcel.generateExcel("table_temp", rs, appExcel)
                End If
                rs.Close()
                fichierExcel.SaveAs(fileName)

  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
    Il n'y a pas besoin d'avoir Excel installé sur le poste pour pouvoir générer des fichiers Excel par programmation. Il faut et il suffit de référencer les bibliothèques Office Excel dans son projet pour que le code que tu a écris, psyko72, soit interprété.

    On me corrigera si je me trompe, mais le format OpenXml n'est pas lisible par les versions d'Excel antérieures à la version 2003.

    Pour une compatibilité ascendante, il vaut mieux partir d'une vieille version d'Excel (2000 me semble un bon compromis) pour que les fichiers générés aient plus de chance d'être lisibles sur une machine quelconque.
    Voici deux liens pour t'aider, psyko72 :
    http://dotnet.developpez.com/cours/office/
    http://skalp.developpez.com/tutoriel...tomationexcel/

  7. #7
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Au temps pour moi

  8. #8
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    interop.Excel .net 1.5.0.0 true D:\APPLIT.NET\Interop.Excel.dll

    c'est ce que j'ai concernant la referance excel de mon projet si vous pouver m aider

  9. #9
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    La récupération de la fabrique de classe COM pour le composant avec le CLSID {00024500-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80040154.


    voici l'erreur qui me met quand je desinstall excel et on executant la ligne de commande Dim appExcel As New Excel.Application

    merci de votre aide

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    je viens de faire le tour des sites qui parle de cette erreur, il disent que c'est pas fesable sans avoire excel installer "help please"

    Is Excel installed there? I ask because some people think they access Excel
    without installing them. The Interop layer is only a layer between the own
    app and the COM application. Without the COM application, it still doesn't
    run. You probably know this already (but maybe not).

    http://www.thescripts.com/forum/thread459532.html

    il me faut la dll de type COM le probleme je l'ajoute quand j'install excel et dés que je supprime excel elle disparait "des references de mon projet" meme on la copiant a la main vers un autre repertoire

    Par contre j ai pas ce probleme avec access WHY

  11. #11
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Citation Envoyé par Skalp Voir le message
    On me corrigera si je me trompe, mais le format OpenXml n'est pas lisible par les versions d'Excel antérieures à la version 2003.
    je corrige.
    OpenXML n'est lisible que par Office 2007.
    Pour les versions antérieures (2003, XP et 2000) il existe un pack de compatibilité :
    http://www.microsoft.com/downloads/d...3-c6bb74cd1466
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    est ce quelqu un peut m'aider juste pour ecrire du texte sur un fichier excel sans avoir excel installer sur le poste car la je coince j'ai tenter plein de truc avec les DLL surtout avec "Microsoft.Office.Interop.Excel.dll" sans succes

  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
    Il existe des API permettant de manipuler des fichiers Excel sans avoir besoin des bibliothèques COM. C'est indiqué dans l'article que je t'ai donné en lien, mais tu n'as pas du aller voir (http://skalp.developpez.com/tutoriel...tomationexcel/)

    Il existe une API gratuite , c'est le projet Koogra. Bon courage, il n'y a pas de documentation utilisateur...

  14. #14
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    merci pour ton aide je viens d'utiliser la DLL du projet koogra ca marche bien mais c'est juste pour la lecture de fichier excel et non l'ecriture

  15. #15
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    ben voila j ai trouver une solution trés simple pour generer un fichier excel sans avoir excel installer sur le poste, il suffit de generer un fichier qlq genre txt et modifier son extention en .xls,
    biensure il faut utiliser le separateur tabulation pour pouvoir l'ouvrir avec excel

    voila Merci de Votre aide a tous

  16. #16
    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 psyko72 Voir le message
    merci pour ton aide je viens d'utiliser la DLL du projet koogra ca marche bien mais c'est juste pour la lecture de fichier excel et non l'ecriture
    Autant pour moi !

    Citation Envoyé par psyko72 Voir le message
    ben voila j ai trouver une solution trés simple pour generer un fichier excel sans avoir excel installer sur le poste, il suffit de generer un fichier qlq genre txt et modifier son extention en .xls,
    biensure il faut utiliser le separateur tabulation pour pouvoir l'ouvrir avec excel
    En fait tu génères un fichier texte dont le séparateur de champs est la tabulation.
    As-tu testé l'ouverture avec Excel ? Si oui, avec quelle version ?
    Car j'ai testé de mon côté avec Excel 2003 et lorsque j'ouvre en double cliquant sur le fichier, les données s'affichent bien sur des lignes différentes, mais seulement dans la première colonne...
    Pour que les données s'affichent correctement, il faut passer par l'outil d'import Excel, soit en faisant Fichier > Ouvrir, soit en faisant Données W Données externes > Importer des données.

    Mais si la solution de générer le fichier texte te convient quand même, ya pas de problème

    [EDIT] Oui, effectivement, j'ai testé avec un fichier enregistré avec notepad et il a du transformer les tabulations en espaces à l'enregistrement...

  17. #17
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    non il s'ouvre bien avec excel2003 sans probleme voila mon code ca peut aider quelqu'un

    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
     
     Public Sub export_to_xls(ByVal chemin As String, ByVal table As String)
            Dim command As New OleDb.OleDbCommand
            Dim reader As OleDb.OleDbDataReader
            Dim sw As StreamWriter
            Dim i, j As Integer
            Dim first As Boolean
            Dim formExcelProgression As FS_traitementProgession
     
     
     
     
     
            'connexion a la base de donnée
            Try
     
     
                command.Connection = Depart.ConnectionBdNet
                command.CommandText = "SELECT * FROM " + table + " "
                reader = command.ExecuteReader()
     
     
                sw = New StreamWriter(chemin, False, System.Text.Encoding.Default)
                first = True
     
     
     
                While (reader.Read())
                    For i = 1 To reader.FieldCount - 1
                        If first = True Then
                            For j = 1 To reader.FieldCount - 1
                                sw.Write(reader.GetName(j))
                                sw.Write(vbTab)
                                sw.Flush()
                            Next
                            first = False
                            sw.Write(sw.NewLine)
                            sw.Write(sw.NewLine)
                            sw.Flush()
                        End If
                        sw.Write(reader.Item(i))
                        sw.Write(vbTab)
                        sw.Flush()
                    Next
                    sw.Write(sw.NewLine)
                    sw.Flush()
                End While
     
                sw.Close()
                reader.Close()
                command.Dispose()
     
     
     
            Catch ex As Exception
                System.Windows.Forms.MessageBox.Show("Exportation vers excel : " + ex.Message)
            End Try
     
     
        End Sub
     
    #End Region

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

Discussions similaires

  1. lire un fichier excel sans avoir excel installé
    Par royersebastien dans le forum VBA Word
    Réponses: 6
    Dernier message: 07/10/2009, 11h26
  2. Réponses: 6
    Dernier message: 27/10/2008, 11h56
  3. Executer fichier .jar sans avoir jvm installé
    Par fafoula dans le forum Général Java
    Réponses: 2
    Dernier message: 17/09/2008, 13h23
  4. [.xls] Comment créer ce type de fichier sans avoir Excel ?
    Par fredppp dans le forum Framework .NET
    Réponses: 1
    Dernier message: 05/09/2008, 12h29
  5. Lire un fichier Excel (sans avoir Excel installé)
    Par Adaemon dans le forum ASP.NET
    Réponses: 2
    Dernier message: 15/05/2007, 20h31

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