2013-04-11 2 views
0

안녕하세요. 사용자가 데이터베이스에서 데이터를 다운로드 할 수 있도록 허용하여 데이터베이스에 액세스하지 않고 조작 할 수 있도록 노력하고 있습니다. 지금까지이 파일을 만들었지 만 클라이언트 PC에 다운로드해야합니다. 어떤 팁?데이터 테이블을 CSV 파일로 다운로드

Protected Sub ExportDataTableToCSV(cmdText As String) 
    Try 
     Dim sqlcon_Local As New SqlClient.SqlConnection 
     sqlcon_Local.ConnectionString = ConfigurationManager.ConnectionStrings("Portal").ConnectionString 
     Dim objCmd As New SqlCommand(cmdText, sqlcon_Local) 
     Dim da As SqlDataAdapter = New SqlDataAdapter(objCmd) 
     Dim dt As DataTable = New DataTable 
     da.Fill(dt) 
     Dim filename As String = Server.MapPath("~/download.csv") 
     Dim sw As New StreamWriter(filename, False) 

     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) 

     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() 

     Response.Clear() 
     Response.ContentType = "application/csv" 
     Response.AddHeader("Content-Disposition", "attachment; filename=download.csv") 
     Response.WriteFile(filename) 
     Response.Flush() 
     Response.End() 

    Catch ex As Exception 

    End Try 
End Sub 

무엇이 잘못 되었나요? 모든 입력을 환영합니다.

시간 내 주셔서 감사합니다.

답변

0

Response.ContentType = "텍스트/CSV '로 Response.ContentType을 변경하십시오;

희망이 도움이됩니다 당신

+0

이것은 작동하지 않았습니다. 아이디어에 감사드립니다. – Ja77aman

0
Public Shared Function Export_CSV(ByVal cmdText As String) As String 

     Dim message As String = Nothing 

     Try 

      Dim sqlcon_Local As New SqlClient.SqlConnection 
      sqlcon_Local.ConnectionString = ConfigurationManager.ConnectionStrings("Portal").ConnectionString 
      Dim objCmd As New SqlCommand(cmdText, sqlcon_Local) 
      Dim da As SqlDataAdapter = New SqlDataAdapter(objCmd) 
      Dim dt As DataTable = New DataTable 
      da.Fill(dt) 

      Dim context As HttpContext = HttpContext.Current 
      context.Response.Clear() 

      For Each column As DataColumn In dt.Columns 
       context.Response.Write(column.ColumnName + ",") 
      Next 

      context.Response.Write(Environment.NewLine) 

      For Each row As DataRow In dt.Rows 

       For i As Integer = 0 To dt.Columns.Count - 1 
        context.Response.Write(row(i).ToString.Replace(",", String.Empty) + ",") 
       Next 

       context.Response.Write(Environment.NewLine) 

      Next 

      context.Response.ContentType = "txt/csv" 
      context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + download + ".csv") 

      HttpContext.Current.ApplicationInstance.CompleteRequest() 

      message = "Export Successful" 

     Catch ex As Exception 

      message = ex.Message.ToString 

     End Try 

     Return message 

    End Function 

심판 : http://www.thewebbureau.com/tech_blog/post/Export-DataTable-To-CSV.aspx

당신이 IE 브라우저에 문제가있는 경우

변화

context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + download + ".csv") 

+0

정보 주셔서 감사합니다, 그것은 파일을 다운로드하지 않는 것 같습니다. "context.Response.End()"에서 예외를 만듭니다. – Ja77aman

+0

예외는 무엇입니까? 나는 테스트를했고 잘 작동하고있다. – Damith

+0

"스레드가 중단되었다." – Ja77aman

관련 문제