2011-10-05 80 views
0

目前我有这个代码:如何在导出包含逗号的csv文件时避免错误?

SqlConnection connection = new SqlConnection(@"Data Source=localhost\SQLEXPRESS;Initial Catalog=PSeminar;Integrated Security=true;Trusted_Connection=Yes;MultipleActiveResultSets=true"); 
     SqlCommand Command = connection.CreateCommand(); 

     SqlDataReader SQLRD; 

     Command.CommandText = "Select * from Attendance"; 

     connection.Open(); 
     SQLRD = Command.ExecuteReader(); 


     //string data = ""; 

     System.Text.StringBuilder sb = new System.Text.StringBuilder(); 

     while (SQLRD.Read()) 
     { 

      sb.Append(String.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}\n", 
      SQLRD[0], SQLRD[1], SQLRD[2], SQLRD[3], SQLRD[4], SQLRD[5], SQLRD[6], SQLRD[7])); 
     } 

     SQLRD.Close(); 
     connection.Close(); 

     byte[] ar = System.Text.Encoding.UTF8.GetBytes(sb.ToString()); 
     Response.ClearContent(); 
     Response.ClearHeaders(); 
     Response.AddHeader("Content.Type", "application/octet-stream"); 
     Response.AddHeader("Content-Length", ar.Length.ToString()); 
     Response.AddHeader("Content-Disposition", "attachment; filename=download.csv"); 
     Response.BinaryWrite(ar); 
     Response.Flush(); 
     Response.End(); 

目前,如果我出口它,如果有逗号字符串中,这将是在CSV文件中的另一列,并且不一样的人,怎么样我能解决这个问题吗?希望可以有人帮帮我!

回答

2

CSV“规范”(如果你可以称之为)允许文本限定符。因此,您可以执行以下操作:

test,test,"this, and this", test 

这是四列数据,第三列包含值[this和this]。

编辑:修改格式字符串以下几点:

"\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\"\n" 
+0

那么我suppossed办?因为我不知道如何克服这个错误,任何例子?对不起=/ –

+1

@Terence - 如果你用保罗所说的用双引号括住所有的字符串,那么你会好起来的--Excel将把逗号视为属于封闭的字符串而不是分隔符。 – slugster

+0

@slugster问题是如何把我的代码中的引号我试图插入引号,但有很多错误。 –

相关问题