La méthode suivante fonctionne bien sûr, mais après un certain nombre de téléchargements (ce n'est pas constant) mon client obtient l'erreur redoutée: "System.Data.OleDb.OleDbException: Unspecified erreur »Aidez-moi à trouver la fuite dans ce code d'importation Excel
étapes:
- télécharge client un fichier excel via une commande de téléchargement de fichiers
- fichier est enregistré dans le système de fichiers
- fichier est ouvert via le fournisseur OLEDB et lire en un ensemble de données
Ma seule supposition est que le fournisseur ne libère pas de ressources. La seule façon de l'effacer (temporairement) est de réinitialiser les services Internet (IIS). Pour cette raison, je suis enclin à penser que le fournisseur peut être bloqué par d'autres sites sur ce serveur. Nous hébergeons un site pour un client (nous n'avons pas construit) qui utilise ce fournisseur, il est donc possible qu'il y ait un problème de leur côté. Quelqu'un peut-il commenter cela?
S'il vous plaît jeter un oeil à la méthode ci-dessous et m'aider à me débarrasser de ce problème!
Public Shared Function GetExcelData(ByVal excelFile As String, ByVal sheetNumber As Integer) As DataSet
Dim connString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", excelFile)
Dim excelDataSet As New DataSet()
Using conn As New OleDbConnection(connString)
conn.Open()
Using dt As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim excelSheets(dt.Rows.Count) As String
Dim i As Integer = 0
For Each row As DataRow In dt.Rows
excelSheets(i) = row("TABLE_NAME").ToString
i += 1
If i = sheetNumber Then
Exit For
End If
Next
Using excelCommand As New OleDbCommand("Select * from [" & excelSheets(sheetNumber - 1) & "]", conn)
Using excelAdapter As OleDbDataAdapter = New OleDbDataAdapter(excelCommand)
excelAdapter.Fill(excelDataSet)
End Using
End Using
End Using
conn.Close()
End Using
Return excelDataSet
End Function
Croyez-moi Mitch, je suis épuisé google pour celui-ci. N'est-ce pas le but de ce site de toute façon, de partager l'expérience pour aider les autres à résoudre des problèmes? Je sais que j'ai répondu à un tas de questions comme celle-ci. – ScottE
OK, désolé. Le classeur Excel est-il ouvert lorsque vous l'interrogez? –
Je veux dire WorkSheet. –