Export de données vers un fichier XLSX

quentin22breizh Messages postés 34 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 27 avril 2017 - 9 mai 2016 à 15:16
quentin22breizh Messages postés 34 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 27 avril 2017 - 16 mai 2016 à 17:31
Bonjour à tous,

Je me permets de solliciter votre aide car je bloque sur un point. Je suis actuellement en train de développer une petite application qui, à partir d'un fichier type .XLS, récupère les données qui m'intéresse, les remets en forme et les mets dans un fichier .XLSX.

Pour la partie récupération et traitement des données, c'est bon mais pour la partie export, je bloque...

Ma source de données est un tableau de N ligne (Je la connais mais peut varier selon les cas) et 7 Colonnes. Je ne souhaite pas utiliser Excel car il n'est pas forcement sur le poste (Les fichiers sont utilisés par des logiciels d'automatisme).


Merci d'avance pour votre aide,

Quentin

5 réponses

quentin22breizh Messages postés 34 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 27 avril 2017
Modifié par quentin22breizh le 11/05/2016 à 23:06
Bonsoir à tous,

En fouillant sue le net, j'ai réussi à trouver un code qui me créer mon fichier .xlsx.

Nouveau souci, ma feuille s'appelle "PLC Tags et il aime pas...

Même souci avec mes noms de colonnes.....

Voici mon code:
Dim olecon As OleDbConnection = New OleDbConnection
Dim olecmd As OleDbCommand = New OleDbCommand
Dim FilePath As String = "C:\Temp\"
Dim FileName As String = "PLCTags.xlsx"

'~~> Construct your connection string
Dim connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=" & FilePath & FileName & ";" &
"Extended Properties=""Excel 12.0 Xml;HDR=YES;"""

olecon.ConnectionString = connstring
olecon.Open()

olecmd.Connection = olecon
Dim FEUILLE As String = "PLC Tags"


'~~> Command to create the table
olecmd.CommandText = "CREATE TABLE" & FEUILLE & " (Name VARCHAR, Path VARCHAR, Data Type VARCHAR, Logical Address VARCHAR, Comment VARCHAR, Hmi Visible VARCHAR, Hmi Accessible VARCHAR)"
olecmd.ExecuteNonQuery()

'~~> Adding Data

'~~> Close the connection
olecon.Close()

'~~> Inform User
MessageBox.Show("The file " & FileName & " has been created successfully and has been placed in " & FilePath)


Si quelqu'un pouvait me filer un coup de pouce
0
quentin22breizh Messages postés 34 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 27 avril 2017
12 mai 2016 à 23:13
Bon micro avancée ce soir mais toujours pas la solution. Maintenant, au lieu de me pas me nommer ma feuille, il me la nomme "PLC_Tags"

Ce changement est du à cette modification:
'~~> Command to create the table
olecmd.CommandText = "CREATE TABLE [PLC Tags] (Name VARCHAR, Path VARCHAR, Data Type VARCHAR, Logical Address VARCHAR, Comment VARCHAR, Hmi Visible VARCHAR, Hmi Accessible VARCHAR)"
olecmd.ExecuteNonQuery()


Si quelqu'un voit d'où vient mon problème....
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
13 mai 2016 à 17:35
Bonjour,

Voir ceci:

https://support.microsoft.com/fr-fr/kb/316934#bookmark-2


Option Strict On
Imports System.Data.OleDb
Public Class Form1
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim olecon As OleDbConnection = New OleDbConnection
        Dim olecmd As OleDbCommand = New OleDbCommand
         Dim FilePath As String = "C:\Temp\"
        Dim FileName As String = "PLCTags.xlsx"

        '~~> Construct your connection string
        Dim connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;" &
                                   "Data Source=" & FilePath & FileName & ";" &
                                   "Extended Properties=""Excel 12.0 Xml;HDR=YES;"""

        olecon.ConnectionString = connstring
        olecon.Open()

        olecmd.Connection = olecon
        Dim FEUILLE As String = " PLCTags "
        '~~> Command to create the table
        olecmd.CommandText = "CREATE TABLE " & FEUILLE & " (Id char(255), Name char(255), BirthDate date)"
        olecmd.ExecuteNonQuery()
        olecmd.CommandText = "INSERT INTO " & FEUILLE & " (Id, Name, BirthDate) values ('AAA', 'Andrew', '12/4/1955')"
        olecmd.ExecuteNonQuery()

        '~~> Close the connection
        olecon.Close()

        '~~> Inform User
        MessageBox.Show("The file " & FileName & " has been created successfully and has been placed in " & FilePath)
    End Sub
End Class

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
14 mai 2016 à 12:18
Ensuite pour cela:

Nouveau souci, ma feuille s'appelle "PLC Tags et il aime pas...

Voir ceci:

http://silkyroad.developpez.com/VBA/ClasseursFermes/#LI

où l'on peut lire cela:

Evitez aussi les espaces et les caractères spéciaux dans le nom des feuilles.
Une table peut être une feuille de calcul ou une plage de cellules nommée.



0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
quentin22breizh Messages postés 34 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 27 avril 2017
16 mai 2016 à 17:31
Salut cs_Le Pivert et merci pour tes liens. Je connaissais déjà le premier car c'est à partir de ce dernier que j'ai développé mon programme. Par contre je ne connaissais pas le second. D'après ce qui est dit, ma solution n'est pas la bonne car je dois avor les noms donné plus haut. Tant pis, je vais partir sur du microsift interop

Merci de votre aide
0
Rejoignez-nous