Bon ben comme le titre le dit... ;)
Je voulais pas enregistrer le fichier excel sur le serveur car je voulais juste en extraire les données mais j'ai comme pas eu le choix car j'ai pas trouvé comment... Si qqu saurait comment s'y prendre bien vouloir m'en faire part ;)
Source / Exemple :
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
Sub Upload_Click(ByVal Sender As Object, ByVal e As EventArgs)
'Le nom du fichier
FileName.InnerHtml = MonFichier.PostedFile.FileName
Dim strFileName As String = MonFichier.PostedFile.FileName
'Ceci est le span où j'affiche les messages
Span1.InnerHtml = ""
Try
'On vérifie s'il envoi vraiment un fichier et si c'est un fichier excel.
If (Len(strFileName) = 0) Then
Throw New Exception("Spécifier un fichier.")
ElseIf (Right(LCase(strFileName), 4) <> ".xls") Then
Throw New Exception("Ce n'est pas un fichier excel.")
End If
Try
'On essai d'enregistrer le fichier dans le dossier \fichierstemp temporairement
MonFichier.PostedFile.SaveAs(Server.MapPath("./fichierstemp") & "\" & MonFichier.PostedFile.FileName)
Span1.InnerHtml = Span1.InnerHtml & "Le fichier a été téléchargé avec succès.<br>"
Catch Exp As Exception
Span1.InnerHtml = Span1.InnerHtml & "Impossible de télécharger le fichier.<br>"
End Try
' Création de la connexion Ole DB sur mon fichier excel
Dim strConn As String = "Provider=Microsoft.Jet.OleDb.4.0;" _
& "data source=" & Server.MapPath("./fichierstemp") & "\" & MonFichier.PostedFile.FileName & ";" _
& "Extended Properties=Excel 8.0;"
Dim objConn As New OleDbConnection(strConn)
'Ma requete où traduction étant la région où se trouvent mes cellules
Dim strSql As String = "SELECT * FROM traduction"
Dim objCmd As New OleDbCommand(strSql, objConn)
' Création de la connexion Ole DB sur ma BD
Dim strConn2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & Server.MapPath("..\BD\glossaire.mdb")
Dim objConn2 As New OleDbConnection(strConn2)
Dim objCmd2 As New OleDbCommand
'Va contenir les résultats de ma requete
Dim sourceReader As OleDbDataReader
Try
'Ouvre la connexion et exécute la requête
objConn.Open()
sourceReader = objCmd.ExecuteReader()
Try
'tente d'ouvrir la BD
objConn2.Open()
Catch ex As Exception
Span1.InnerHtml = Span1.InnerHtml & "Impossible d'ouvrire la BD.<br>"
End Try
Try
'Lit le résultat de ma requete sur le fichier excel et l'insère dans ma BD
While sourceReader.Read()
'bon ici un peu de niaisage pour faire ma requete...
Dim strSql2 As String = "INSERT INTO glossaire1 (Anglais, Francais, Source) VALUES ("
Dim col1, col2, col3 As String
If Not IsDBNull(sourceReader.Item(0)) Then
col1 = "'" & Replace(sourceReader.Item(0), "'", "''") & "'"
Else
col1 = "null"
End If
If Not IsDBNull(sourceReader.Item(1)) Then
col2 = "'" & Replace(sourceReader.Item(1), "'", "''") & "'"
Else
col2 = "null"
End If
If Not IsDBNull(sourceReader.Item(2)) Then
col3 = "'" & Replace(sourceReader.Item(2), "'", "''") & "'"
Else
col3 = "null"
End If
strSql2 = strSql2 & col1 & "," & col2 & "," & col3 & ")"
objCmd2 = New OleDbCommand(strSql2, objConn2)
Try
'On essai d'insérer la ligne dans ma BD
objCmd2.ExecuteNonQuery()
Catch ex As Exception
Span1.InnerHtml = Span1.InnerHtml & "Impossible d'ajouter dans la BD.<br>"
End Try
End While
Catch ex As Exception
Span1.InnerHtml = Span1.InnerHtml & "Impossible de créer la requête.<br>"
End Try
Catch ex As Exception
Span1.InnerHtml = Span1.InnerHtml & "Impossible d'ouvrir le fichier excel.<br>"
Finally
'Ferme les connexions
objConn.Dispose()
objConn2.Dispose()
End Try
Try
'On tente de supprimer le fichier
Dim deletefichier As New FileInfo(Server.MapPath("./fichierstemp") & "\" & MonFichier.PostedFile.FileName)
deletefichier.Delete()
Span1.InnerHtml = Span1.InnerHtml & "Fichier supprimé.<br>"
Catch ex As Exception
Span1.InnerHtml = Span1.InnerHtml & "Impossible de supprimer le fichier.<br>"
End Try
Catch ex As Exception
Span1.InnerHtml = ex.Message
End Try
End Sub
</script>
<html>
<head><title>Insérer un fichier excel dans une BD.</title>
</head>
<body>
<form runat="server" EncType="Multipart/Form-Data" RunAt="Server">
<!-- Insert content here -->
Choisir le Fichier :
<asp:FileUpload ID="MonFichier" RunAt="Server"></asp:FileUpload>
<asp:Button ID="UploadButton" Text="Upload" OnClick="Upload_Click" RunAt="Server"></asp:Button>
<br />
<span ID="FileName" RunAt="Server" /><br />
<span ID="Span1" RunAt="Server" /><br />
</form>
</body>
</html>
Conclusion :
Bon je suis pas un guru de l'asp .net donc si vous avez des suggestions de meilleurs codes n'hésiter pas à m'en faire part! :)
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.