2014-08-27 110 views
0

我試圖將數據從gridview導出到csv文件。我在谷歌搜索它,我也有一些很好的例子。但是當我在記事本中打開我生成的csv文件時,我總是在每條記錄的結尾處獲得額外的逗號。我想刪除逗號......你能幫我在這裏...如何使用C#導出CSV文件時從行尾刪除逗號

這裏我的代碼的CSV按鈕的點擊

Protected Sub btnexptocsv_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnexptocsv.Click 
    Try 
     Response.Clear() 
     Response.Buffer = True 
     Response.AddHeader("content-disposition", 
     "attachment;filename=Complaint_Details.csv") 
     Response.Charset = "" 
     Response.ContentType = "application/text" 

     grd_ComplaintDetails.AllowPaging = False 

     Dim sb As StringBuilder = New System.Text.StringBuilder() 
     For k As Integer = 0 To grd_ComplaintDetails.Columns.Count - 1 
      'add separator 
      sb.Append(grd_ComplaintDetails.Columns(k).HeaderText + ","c) 
     Next 
     'append new line 
     sb.Append(vbCr & vbLf) 
     For i As Integer = 0 To grd_ComplaintDetails.Rows.Count - 1 
      For k As Integer = 0 To grd_ComplaintDetails.HeaderRow.Cells.Count - 1 
       'add separator 
       'sb.Append(grd_ComplaintDetails.Rows(i).Cells(k).Text + ","c) 
       sb.Append(grd_ComplaintDetails.Rows(i).Cells(k).Text.Replace(",", "") + ",") 
      Next 
      'append new line 
      sb.Append(vbCr & vbLf) 
     Next 
     Response.Output.Write(sb.ToString()) 
     Response.Flush() 
     Response.End() 
    Catch ex As Exception 
     div_Msg.InnerText = "Can not generate CSV file" 
    End Try 

End Sub 

在此先感謝... :)

+1

你的代碼看起來像vb而不是c# – apomene 2014-08-27 11:26:02

+1

爲什麼你不能使用TrimEnd(「,」)? – 2014-08-27 11:26:46

回答

0

製作以下更改

Protected Sub btnexptocsv_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnexptocsv.Click 
    Try 
     Response.Clear() 
     Response.Buffer = True 
     Response.AddHeader("content-disposition", "attachment;filename=Complaint_Details.csv") 
     Response.Charset = "" 
     Response.ContentType = "application/text" 

     grd_ComplaintDetails.AllowPaging = False 

     Dim sbFile As StringBuilder = New System.Text.StringBuilder() 
     Dim sb As StringBuilder = New System.Text.StringBuilder() 
     For k As Integer = 0 To grd_ComplaintDetails.Columns.Count - 1 
      'add separator 
      sb.AppendFormat(",{0}", grd_ComplaintDetails.Columns(k).HeaderText) 
     Next 
     'append new line 
     sb.Remove(0, 1) 
     sb.Append(vbCr & vbLf) 
     sbFile.Append(sb.ToString()) 
     For i As Integer = 0 To grd_ComplaintDetails.Rows.Count - 1 
      sb = New System.Text.StringBuilder() 
      For k As Integer = 0 To grd_ComplaintDetails.HeaderRow.Cells.Count - 1 
       'add separator 
       sb.AppendFormat(",{0}", grd_ComplaintDetails.Rows(i).Cells(k).Text.Replace(",", "")) 
      Next 
      sb.Remove(0, 1) 
      'append new line 
      sb.Append(vbCr & vbLf) 
      sbFile.Append(sb.ToString()) 
     Next 
     Response.Output.Write(sbFile.ToString()) 
     Response.Flush() 
     Response.End() 
    Catch ex As Exception 
     div_Msg.InnerText = "Can not generate CSV file" 
    End Try 
End Sub 
0

剛檢查如果k小於列的總數:

For k As Integer = 0 To grd_ComplaintDetails.HeaderRow.Cells.Count - 1 
    If k < grd_ComplaintDetails.HeaderRow.Cells.Count - 1 Then 
      sb.Append(grd_ComplaintDetails.Rows(i).Cells(k).Text.Replace(",", "") + ",") 
    Else 
      sb.Append(grd_ComplaintDetails.Rows(i).Cells(k).Text.Replace(",", "")) 
    End If 
Next 
+0

感謝噸朋友...對於你所有的幫助..它的作品.... :) – 2014-08-27 12:00:50

1

有兩兩件事你可以做:

  1. String.TrimEnd( 「 」)
  2. 的string.join(「,」,字符串[])
0

首先,您應該使用csv字段轉換器。以其最簡單的形式:

"\"" " field.Replace("\"", "\"\") + "\"" 

引號是可選的,但它們允許您在字段中使用逗號和crs以及換行符。那麼你不必更換它們。

收集起來到一個數組 - 使用LINQ功能將是真棒這裏 - 然後加入他們的行列(ALA Juann):

String.Join(",", field.select(m => "\"" + field.Replace("\"", "\"\") + "\"") + "\r\n"; 

顯然將其轉換爲VB。

相關問題