2011-09-05 87 views
0

我有一個應該包含下載功能的項目,當用戶按下下載按鈕時,SQL Server表格的內容將作爲csv文件下載。下載SQL Server表的內容,並將其內容放入CSV文件中?

有什麼辦法可以做到這一點?

表格名爲Characters的內容將作爲csv文件下載。我知道的是,我使用查詢Select* from Characters,但我不知道如何實現它。

 protected void btnDownload_Click(object sender, EventArgs e) 
    { 

     string fileName = string.Empty; 
     string filepath = Request.MapPath("~/Uploads");// this needs to be changed with the SQL query, but I do not know how to implement it 
     string downloadFileName = "Attendance.zip"; 
     Response.ContentType = "application/zip"; 
     Response.AddHeader("content-disposition", "filename=" + downloadFileName); 

     using (ZipFile zip = new ZipFile()) 
     { 
      foreach (GridView row in gvFiles.Rows) 
      { 
       CheckBox cb = (CheckBox)row.FindControl("chkSelect"); 
       if (cb != null && cb.Checked) 
       { 
        fileName = (row.FindControl("lblFileName") as Label).Text; 
        zip.AddFile(Server.MapPath(Path.Combine(filepath, fileName)), ""); 
       } 
      } 
      zip.Save(Response.OutputStream); 
     } 

回答

0

我不確定你發佈的代碼是如何與問題相關的,但這裏是如何獲取表格的內容並將其轉換爲CSV文件。該示例假設你有一個已經填充的DataTable(dtTable):

StringBuilder sb = new StringBuilder(); 

for (int i = 0; i < dtTable.Columns.Count; i++) 
{ 
    sb.Append(dtTable.Columns[i].ColumnName); 
    sb.Append(","); 
} 

// Remove the trailing , 
sb.Remove(sb.Length - 1, 1); 
sb.Append(Environment.NewLine); 

for (int i = 0; i < dtTable.Rows.Count; i++) 
{ 
    for (int j = 0; i < dtTable.Columns.Count; j++) 
    { 
     sb.Append(dtTable.Rows[i][j].ToString()); 
     sb.Append(","); 
    } 

    sb.Remove(sb.Length - 1, 1); 
    sb.Append(Environment.NewLine); 
} 

string csvFileString = sb.ToString(); 
0

你沒有帶告知的環境。例如:

  • 您使用哪種數據訪問技術?
  • 您是否必須轉義csv文件中的字段?

對於處理csv文件我推薦使用filehelpers library

如果你在選擇數據訪問方面是免費的,也許你應該看看LINQ2SQLADO EF或者只是使用普通的SqlCommand/SqlDataReader。

+0

我正在使用SQL Server 2008 – Mark20

相關問題