J'essaie de créer un fichier csv de certaines données. Je l'ai écrit une fonction qui fait avec succès cette ....Utilisation d'un chemin de fichier local dans un objet Streamwriter ASP.Net
Private Sub CreateCSVFile(ByVal dt As DataTable, ByVal strFilePath As String)
Dim sw As New StreamWriter(strFilePath, False)
''# First we will write the headers.
''#DataTable dt = m_dsProducts.Tables[0];
Dim iColCount As Integer = dt.Columns.Count
For i As Integer = 0 To iColCount - 1
sw.Write(dt.Columns(i))
If i < iColCount - 1 Then
sw.Write(",")
End If
Next
sw.Write(sw.NewLine)
''# Now write all the rows.
For Each dr As DataRow In dt.Rows
For i As Integer = 0 To iColCount - 1
If Not Convert.IsDBNull(dr(i)) Then
sw.Write(dr(i).ToString())
End If
If i < iColCount - 1 Then
sw.Write(",")
End If
Next
sw.Write(sw.NewLine)
Next
sw.Close()
End Sub
Le problème est que je ne suis pas en utilisant l'objet StreamWriter correctement ce que je tente d'accomplir. Comme il s'agit d'un asp.net j'ai besoin que l'utilisateur sélectionne un chemin de fichier local pour mettre le fichier. Si je passe un chemin à cette fonction, il va essayer de l'écrire dans le répertoire spécifié sur le serveur où le code est. Je voudrais que cela popups et laisser l'utilisateur de sélectionner un endroit sur leur machine locale pour mettre le fichier ....
Dim exData As Byte() = File.ReadAllBytes(Server.MapPath(eio))
File.Delete(Server.MapPath(eio))
Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fn))
Response.ContentType = "application/x-msexcel"
Response.BinaryWrite(exData)
Response.Flush()
Response.End()
J'appelle la première fonction dans le code comme ça ...
Dim emplTable As DataTable = SiteAccess.DownloadEmployee_H()
CreateCSVFile(emplTable, "C:\\EmplTable.csv")
Où je ne veux pas avoir à spécifier le fichier loaction (parce que cela va mettre le fichier sur le serveur et non sur une machine client) mais plutôt laisser l'utilisateur sélectionner l'emplacement sur leur machine client.
Quelqu'un peut-il m'aider à mettre cela ensemble? Merci d'avance.
J'ai recréé ma fonction d'exportation et maintenant il permet à l'usr de sélectionner un chemin de téléchargement, mais une colonne dans les données téléchargées a des données sous la forme de "Doe, John" cette colonne est appelée "EPLNME" le fichier de sortie parce que sa lecture de la virgule dans les données et maintenant les données sont désactivées par une colonne dans le fichier de sortie peut quelqu'un m'aider à arrêter cet incident spécifique je ne sais pas comment je peux. Voici le code ...
Private Sub ExportCSV(ByVal data As DataTable, ByVal nameOfFile As String)
Dim context As HttpContext = HttpContext.Current
context.Response.Clear()
context.Response.ContentType = "text/csv"
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + nameOfFile + ".csv")
''#Write column header names
For i = 0 To data.Columns.Count - 1
If (i > 0) Then
context.Response.Write(",")
End If
context.Response.Write(data.Columns(i).ColumnName)
Next
context.Response.Write(Environment.NewLine)
''#Write data
For Each row As DataRow In data.Rows
For i = 0 To data.Columns.Count - 1
If (i > 0) Then
context.Response.Write(",")
End If
context.Response.Write(row.Item(i).ToString())
Next
context.Response.Write(Environment.NewLine)
Next
context.Response.End()
End Sub
Je trierait la mise en forme sur votre question out, c'est très illisible. – Yoda