Export de données vers un fichier XLSX

quentin22breizh 35 Messages postés mercredi 30 juillet 2014Date d'inscription 27 avril 2017 Dernière intervention - 9 mai 2016 à 15:16 - Dernière réponse : quentin22breizh 35 Messages postés mercredi 30 juillet 2014Date d'inscription 27 avril 2017 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

quentin22breizh 35 Messages postés mercredi 30 juillet 2014Date d'inscription 27 avril 2017 Dernière intervention - Modifié par quentin22breizh le 11/05/2016 à 23:06
0
Merci
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
Commenter la réponse de quentin22breizh
quentin22breizh 35 Messages postés mercredi 30 juillet 2014Date d'inscription 27 avril 2017 Dernière intervention - 12 mai 2016 à 23:13
0
Merci
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....
Commenter la réponse de quentin22breizh
cs_Le Pivert 5447 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 17 octobre 2018 Dernière intervention - 13 mai 2016 à 17:35
0
Merci
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

Commenter la réponse de cs_Le Pivert
cs_Le Pivert 5447 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 17 octobre 2018 Dernière intervention - 14 mai 2016 à 12:18
0
Merci
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.



Commenter la réponse de cs_Le Pivert
quentin22breizh 35 Messages postés mercredi 30 juillet 2014Date d'inscription 27 avril 2017 Dernière intervention - 16 mai 2016 à 17:31
0
Merci
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
Commenter la réponse de quentin22breizh

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.