处理逗号
在使用string.Format(...)
时处理值内的逗号,以下方法适用于我:
var newLine = string.Format("\"{0}\",\"{1}\",\"{2}\"",
first,
second,
third
);
csv.AppendLine(newLine);
因此,结合Johan的答案,它看起来像这样:
var csv = new StringBuilder();
var first = reader[0].ToString();
var second = image.ToString();
var newLine = string.Format("\"{0}\",\"{1}\"", first, second);
csv.AppendLine(newLine);
File.WriteAllText(filePath, csv.ToString());
返回CSV文件
如果您只是想返回文件而不是将其写入到位置,这是我完成它的示例:
从存储过程中
public FileContentResults DownloadCSV()
{
SqlConnection thisConnection = new SqlConnection("Data Source=sv12sql;User ID=UI_Readonly;Password=SuperSecure;Initial Catalog=DB_Name;Integrated Security=false");
SqlCommand queryCommand = new SqlCommand("spc_GetInfoINeed", thisConnection);
queryCommand.CommandType = CommandType.StoredProcedure;
StringBuilder sbRtn = new StringBuilder();
var header = string.Format("\"{0}\",\"{1}\",\"{2}\"",
"Name",
"Address",
"Phone Number"
);
sbRtn.AppendLine(header);
thisConnection.Open();
using (SqlDataReader rdr = queryCommand.ExecuteReader())
{
while (rdr.Read())
{
var queryResults = string.Format("\"{0}\",\"{1}\",\"{2}\"",
rdr["Name"].ToString(),
rdr["Address"}.ToString(),
rdr["Phone Number"].ToString()
);
sbRtn.AppendLine(queryResults);
}
}
thisConnection.Close();
return File(new System.Text.UTF8Encoding().GetBytes(sbRtn.ToString()), "text/csv", "FileName.csv");
}
从列表中获取
public static List<Person> list = new List<Person>();
public class Person
{
public string name;
public string address;
public string phoneNumber;
}
public FileContentResults DownloadCSV()
{
StringBuilder sbRtn = new StringBuilder();
var header = string.Format("\"{0}\",\"{1}\",\"{2}\"",
"Name",
"Address",
"Phone Number"
);
sbRtn.AppendLine(header);
foreach (var item in list)
{
var listResults = string.Format("\"{0}\",\"{1}\",\"{2}\"",
item.name,
item.address,
item.phoneNumber
);
sbRtn.AppendLine(listResults);
}
}
return File(new System.Text.UTF8Encoding().GetBytes(sbRtn.ToString()), "text/csv", "FileName.csv");
}
希望这对你有所帮助。
StringBuilder
然后再保存一次吗? - JohanUtil.WriteCsv(mydatacollection, @"c:\temp\data.csv");
- Marco