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 :

Convertir csv en xls


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Par défaut Convertir csv en xls
    Bonjour à tous !

    Après plusieurs recherches, je me retrouve toujours avec le même problème dans mon code vb.net

    J'aimerais convertir mon fichier csv en fichier xls (qui aura donc la forme d'un tableau) car j'extrait d'une BDD des infos qui sont intégrées dans un fichier CSV.

    (fichier csv obligatoire pour d'autres traitements)

    quelqu'un aurait des liens pour avoir une piste sur ce que je veux faire svp ?

    Merci d'avance !

  2. #2
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Par défaut
    Bonjour Anthos59

    essay ça

    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
     
     
    Imports Excel = Microsoft.Office.Interop.Excel
     
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
     
            Dim appExcel As Excel.Application
            Dim wbExcel As Excel.Workbook 'Classeur Excel
            appExcel = CreateObject("Excel.Application")
            wbExcel = appExcel.Workbooks.Open("c:ex47.csv")
            wbExcel.SaveAs(Filename:= _
                "C:\ex47xl.xls", FileFormat:=Excel.XlFileFormat.xlExcel8, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
     
     End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Par défaut
    Bonjour à tous !

    Merci pour vos réponses.

    J'étais sur la piste de l'interop mais pas encore de la même manière que les solutions que vous m'aviez donné. (j'essayais de passer ça grâce aux macros)

    Ma solution ne fonctionne pas et apparement celle de Mounaje ne passe pas non plus.

    Pour des raisons techniques, mon séparateur est le #
    Il faut ajouter une spécification à ce code ? j'essaie de trouver ça et reviens vers vous si j'ai trouvé.

    Merci de votre aide.

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut importet fichier texte csv vers excel
    bonjour
    on se perd dans vb.net parbleu ,il n'y a pas à sortir l'artillerie lourd .
    streamreader fait le boulot:
    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
     
    Imports Excel = Microsoft.Office.Interop.Excel
    Import System.FileIO
     
    Using MyReader As New _
    Microsoft.VisualBasic.FileIO.TextFieldParser("c:ex47.csv")
         '-------cree un classeur de meme nom---------
        Dim appExcel As Excel.Application
        appExcel = new  Excel.Application   
        Dim wbExcel As Excel.Workbook 'Classeur Excel
        wbExcel = appExcel.Workbooks.Add("c:ex47.xls")
        'acceder 1ere feuille
        Dim wbFeuille as Excel.WorkSheet
        wbFeuille =  wbExcel.WorkSheet(1)
       '-------------ouverture fichier texte & lecture ---------
       MyReader.TextFieldType = FileIO.FieldType.Delimited
       MyReader.SetDelimiters("#")
       'ligne lue
       Dim currentRow As String()
       Dim lig as integer =1
       While Not MyReader.EndOfData
          Try
             currentRow = MyReader.ReadFields()
            'champ lu 
             Dim col as integer =1
            Dim currentField As String
            For Each currentField In currentRow
                wbFeuille.cells(lig,col).value=currentField
                'colonne suivante
                col=col+1
             Next
                  Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
          MsgBox("Line " & ex.Message & _
          "is not valid and will be skipped.")
          End Try
          'ligne suivante
          lig=lig+1
       End While
        wbExcel.SaveAs(Filename:= _
                "C:\ex47xl.xls", FileFormat:=Excel.XlFileFormat.xlExcel8, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
     
    End Using
    bon code.............

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Par défaut
    Re-bonjour à tous

    Désolé de faire le boulet comme ça mais je me retrouve de nouveau face à une erreur que je ne comprend pas.
    j'ai essayé diverses choses mais sans succès.

    Voici mon code :

    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
    Imports Excel = Microsoft.Office.Interop.Excel
    Imports System.IO
     
     
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Using MyReader As New  _
    Microsoft.VisualBasic.FileIO.TextFieldParser("D:\SaveITS\test\intakeEXP.csv")
                '-------cree un classeur de meme nom---------
                Dim appExcel As Excel.Application
                appExcel = New Excel.Application
                'Création du fichier s'il n'existe pas
                If File.Exists("D:\SaveITS\test\intakeXLS.xls") Then
                    File.Delete("D:\SaveITS\test\intakeXLS.xls")
                    Dim MonFichier As IO.FileStream = New IO.FileStream("D:\SaveITS\test\intakeXLS.xls", IO.FileMode.Create)
                Else
                    Dim MonFichier As IO.FileStream = New IO.FileStream("D:\SaveITS\test\intakeXLS.xls", IO.FileMode.Create)
                End If
                Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
                wbExcel = appExcel.Workbooks.Add("D:\SaveITS\test\intakeXLS.xls")
                'acceder 1ere feuille
                Dim wbFeuille As Excel.Worksheet
                wbFeuille = wbExcel.WorkSheet(1)
                '-------------ouverture fichier texte & lecture ---------
                MyReader.TextFieldType = FileIO.FieldType.Delimited
                MyReader.SetDelimiters("#")
                'ligne lue
                Dim currentRow As String()
                Dim lig As Integer = 1
                While Not MyReader.EndOfData
                    Try
                        currentRow = MyReader.ReadFields()
                        'champ lu 
                        Dim col As Integer = 1
                        Dim currentField As String
                        For Each currentField In currentRow
                            wbFeuille.Cells(lig, col).value = currentField
                            'colonne suivante
                            col = col + 1
                        Next
                    Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                        MsgBox("Line " & ex.Message & _
                        "is not valid and will be skipped.")
                    End Try
                    'ligne suivante
                    lig = lig + 1
                End While
                wbExcel.SaveAs(Filename:= _
                        "D:\SaveITS\test\intakeXLS.xls", FileFormat:=Excel.XlFileFormat.xlExcel8, _
                        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                        CreateBackup:=False)
     
     
                wbExcel.Close(True)
                wbExcel = Nothing
                appExcel.Quit()
                appExcel = Nothing
     
     
            End Using
        End Sub
    End Class
    Il me renvoie l'erreur suivante :

    Le membre public 'WorkSheet' du type 'Workbook' est introuvable.
    Quelqu'un aurait une piste svp ?

    Merci d'avance

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut EXCEL ET CVS
    REBONJOUR
    on ne cree pas ,svp,un fichier Excel avec IO.FileStream.
    Crois-tu que je connais pas IO.FileStream.
    IO.FileStream cree des fichiers binaires ou texte,mais illisible par Excel .
    C'est pour cela qu'on a fait tout ce code,ou bien tu l'as oublie?
    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
     
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Using MyReader As New  _
    Microsoft.VisualBasic.FileIO.TextFieldParser("D:\SaveITS\test\intakeEXP.csv")
                '//delete seulement le classeur de meme nom s'il existe //
                Dim appExcel As Excel.Application
                appExcel = New Excel.Application
                'Création du fichier s'il n'existe pas
                If File.Exists("D:\SaveITS\test\intakeXLS.xls") Then
                    File.Delete("D:\SaveITS\test\intakeXLS.xls")
                End If
                Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
                '/// voici le createur excel qui cree le nouveau classeur
                wbExcel = appExcel.Workbooks.Add("D:\SaveITS\test\intakeXLS.xls")
                'acceder 1ere feuille
                Dim wbFeuille As Excel.Worksheet
                wbFeuille = wbExcel.WorkSheet(1)
                '-------------ouverture fichier texte & lecture ---------
                MyReader.TextFieldType = FileIO.FieldType.Delimited
                MyReader.SetDelimiters("#")
                'ligne lue
                Dim currentRow As String()
                Dim lig As Integer = 1
                While Not MyReader.EndOfData
                    Try
                        currentRow = MyReader.ReadFields()
                        'champ lu 
                        Dim col As Integer = 1
                        Dim currentField As String
                        For Each currentField In currentRow
                            wbFeuille.Cells(lig, col).value = currentField
                            'colonne suivante
                            col = col + 1
                        Next
                    Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                        MsgBox("Line " & ex.Message & _
                        "is not valid and will be skipped.")
                    End Try
                    'ligne suivante
                    lig = lig + 1
                End While
                '///a la fin du balayage  fich texte ici le createur excel sauvegarde le 
                '///nouveau classeur et ferme excel
                wbExcel.SaveAs(Filename:= _
                        "D:\SaveITS\test\intakeXLS.xls", FileFormat:=Excel.XlFileFormat.xlExcel8, _
                        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                        CreateBackup:=False)
     
     
                wbExcel.Close(True)
                wbExcel = Nothing
                appExcel.Quit()
                appExcel = Nothing
     
     
            End Using
        End Sub
    End Class
    cette fois ca doit marcher,a moins que tu innoves encore ......
    bon code...

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

Discussions similaires

  1. Convertir CSV en XLS
    Par zakou76 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/05/2010, 01h28
  2. convertir un fichier csv en xls
    Par alain47 dans le forum Excel
    Réponses: 2
    Dernier message: 20/04/2009, 11h50
  3. Convertir un fichier XLS en CSV
    Par n@n¤u dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/07/2006, 12h57
  4. [Excel] Convertir un fichier xls en csv sous UNIX
    Par Tsuful dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/04/2006, 11h12

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