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 :

Création de fichier Excel avec Epplus : Fichier Non valide


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Par défaut Création de fichier Excel avec Epplus : Fichier Non valide
    Bonjour,

    Je viens vers vous, car après de multiple recherches ... il semblerait que je sois la seule à avoir ce problème

    Je souhaite remplir un fichier Excel existant puis l'afficher à l'utilisateur. Le processus fonctionne parfaitement, le fichier Excel est modifié correctement.
    Cependant ... à l'ouverture du fichier Excel j'ai le message d'erreur suivant :

    Nom : erreurExcel.PNG
Affichages : 241
Taille : 18,4 Ko

    Voici le 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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
        Protected Sub Export_Europe(ByVal code_fournisseur As String, ByVal libelle_fournisseur As String, ByVal liste_articles As StringCollection)
     
            Dim fileVar As FileInfo
            Dim wbExcel As ExcelWorksheet
            Dim package As ExcelPackage
     
            Dim dt As DataTable = New DataTable
            Dim i As Integer
     
            Dim matricePath As String = CHEMIN_DOCS_ARTICLE & "Matrice\Matrice_Demande_Europe.xlsx"
            Dim folderPathExport As String = CHEMIN_DOCS_ARTICLE & "Temporary\"
            Dim fileNameExport As String = Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "-ICR-FR-" & Session("initiales") & "-" & libelle_fournisseur.Replace(" ", "_") & ".xlsx"
            Dim filePathExport As String = folderPathExport & fileNameExport
     
            ' RECUPERATION DES DONNEES
     
     
            rqt = "la requete"
            Try
                connexion_SQLServer.Open()
                dr_SQLServer = cde_SQLServer.ExecuteReader()
     
                dt.Load(dr_SQLServer)
     
                dr_SQLServer.Close()
            Catch ex As Exception
                System.Diagnostics.Debug.WriteLine("Erreur Requete GridViewNeuf_RowCommand Update Demande Article")
                Me.ClientScript.RegisterStartupScript(Me.GetType(), "MessageBox", "alert('Erreur lors de la connexion à la base de données (6).');", True)
                If (connexion_SQLServer.State = ConnectionState.Open) Then
                    connexion_SQLServer.Close()
                End If
            End Try
     
     
            ' ECRITURE DU FICHIER EXCEL
            If Dir(filePathExport, vbHidden) <> "" Then
                Kill(filePathExport)
            End If
     
            If Not Directory.Exists(folderPathExport) Then
                Directory.CreateDirectory(folderPathExport)
            End If
            FileCopy(matricePath, filePathExport)
     
            fileVar = New FileInfo(filePathExport)
     
            package = New ExcelPackage(fileVar)
     
            wbExcel = package.Workbook.Worksheets("Feuil1")
     
            i = 7
            For Each dr As DataRow In dt.Rows
                wbExcel.Cells("A" & i).Value = "FR"
                wbExcel.Cells("B" & i).Value = code_fournisseur
                wbExcel.Cells("C" & i).Value = libelle_fournisseur
                wbExcel.Cells("D" & i).Value = dr(0)
     
     
                i = i + 1
            Next
     
            package.Save()
            'package.Dispose()
     
           'Téléchargement
            Response.Clear()
            Response.ContentType = "application/octet-stream"
            'Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
            Response.AddHeader("Content-Disposition", "attachment; FileName=" + fileNameExport)
            Response.WriteFile(fileVar.FullName)
            'Response.Flush()
            'Response.End()
     
            'If Dir(filePathExport, vbHidden) <> "" Then
            '    Kill(filePathExport)
            'End If
     
        End Sub
    J'ai supprimé la requête qui est énorme et qui n'apporte rien à la compréhension puisque cette partie fonctionne.

    Si vous avez une idée je prends ... parce que là, je suis à cours.


    Information complémentaire :
    Si je dé-commente le "Response.End", je n'ai pas le message d'erreur. Sauf que ça ne me convient pas puisque je dois je recharger la page ensuite.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par EliseD Voir le message
    Information complémentaire :
    Si je dé-commente le "Response.End", je n'ai pas le message d'erreur. Sauf que ça ne me convient pas puisque je dois je recharger la page ensuite.
    Je ne pense pas que ceci vienne de epplus vu ce renseignement.
    Il vous faut plus chercher de ce coter.

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Par défaut
    Alors là j'ai pas été bonne ...


    Effectivement je n'ai cherché que vers epplus (car j'avais un téléchargement ailleurs qui fonctionnait parfaitement), sauf que ce n'était effectivement pas ça.

    Premièrement il manquait le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Response.AppendHeader("Content-Length", fileVar.Length.ToString())
    Mais ajouter ça n'était pas suffisant, car modifier le fichier via epplus modifie la taille du fichier. Il fallait donc aussi ajouter après la modification du fichier :

    Le code complet correct :

    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
    Protected Sub Export_Europe(ByVal code_fournisseur As String, ByVal libelle_fournisseur As String, ByVal liste_articles As StringCollection)
     
            Dim fileVar As FileInfo
            Dim wbExcel As ExcelWorksheet
            Dim package As ExcelPackage
     
            Dim dt As DataTable = New DataTable
            Dim i As Integer
     
            Dim matricePath As String = CHEMIN_DOCS_ARTICLE & "Matrice\Matrice_Demande_Europe.xlsx"
            Dim folderPathExport As String = CHEMIN_DOCS_ARTICLE & "Temporary\"
            Dim fileNameExport As String = Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "-ICR-FR-" & Session("initiales") & "-" & libelle_fournisseur.Replace(" ", "_") & ".xlsx"
            Dim filePathExport As String = folderPathExport & fileNameExport
     
            ' RECUPERATION DES DONNEES
     
     
            rqt = "la requete"
            Try
                connexion_SQLServer.Open()
                dr_SQLServer = cde_SQLServer.ExecuteReader()
     
                dt.Load(dr_SQLServer)
     
                dr_SQLServer.Close()
            Catch ex As Exception
                System.Diagnostics.Debug.WriteLine("Erreur Requete GridViewNeuf_RowCommand Update Demande Article")
                Me.ClientScript.RegisterStartupScript(Me.GetType(), "MessageBox", "alert('Erreur lors de la connexion à la base de données (6).');", True)
                If (connexion_SQLServer.State = ConnectionState.Open) Then
                    connexion_SQLServer.Close()
                End If
            End Try
     
     
            ' ECRITURE DU FICHIER EXCEL
            If Dir(filePathExport, vbHidden) <> "" Then
                Kill(filePathExport)
            End If
     
            If Not Directory.Exists(folderPathExport) Then
                Directory.CreateDirectory(folderPathExport)
            End If
            FileCopy(matricePath, filePathExport)
     
            fileVar = New FileInfo(filePathExport)
     
            package = New ExcelPackage(fileVar)
     
            wbExcel = package.Workbook.Worksheets("Feuil1")
     
            i = 7
            For Each dr As DataRow In dt.Rows
                wbExcel.Cells("A" & i).Value = "FR"
                wbExcel.Cells("B" & i).Value = code_fournisseur
                wbExcel.Cells("C" & i).Value = libelle_fournisseur
                wbExcel.Cells("D" & i).Value = dr(0)
     
     
                i = i + 1
            Next
     
            package.Save()
            'package.Dispose()
     
           'Téléchargement
            fileVar.Refresh()
            Response.Clear()
            Response.ContentType = "application/octet-stream"
            Response.AddHeader("Content-Disposition", "attachment; FileName=" + fileNameExport)
            Response.AppendHeader("Content-Length", fileVar.Length.ToString())
            Response.WriteFile(fileVar.FullName)
     
     
        End Sub

    Merci de m'avoir fait regarder ailleurs. Je bloquais bêtement !

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

Discussions similaires

  1. [XL-2016] Problème lors de la création d'une connexion avec un fichier Excel
    Par Handlordz dans le forum Excel
    Réponses: 0
    Dernier message: 11/02/2018, 16h31
  2. Réponses: 4
    Dernier message: 29/09/2015, 16h22
  3. [XL-2010] vbaexcel recherche et envoye des données de fichier excelà un autre fichier excel
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/08/2011, 14h42
  4. [XL-2003] Afficher un hyperlien vers fichier Excel dans un fichier Excel
    Par belgudo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/06/2011, 16h26
  5. Recherche V avec un fichier Access et un fichier Excel.
    Par arnold95 dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/04/2008, 17h48

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