在C#中创建CSV,缺少逗号并将每个值放在新行上
我在从数据库创建csv文件时遇到问题 基本上,每个值都被添加到它自己的行中,没有逗号 应该是这样的:在C#中创建CSV,缺少逗号并将每个值放在新行上,c#,sql-server,csv,ado.net,C#,Sql Server,Csv,Ado.net,我在从数据库创建csv文件时遇到问题 基本上,每个值都被添加到它自己的行中,没有逗号 应该是这样的: ColumnValue1, ColumnValue2, ColumnValue3, ColumnValue4 ColumnValue1, ColumnValue2, ColumnValue3, ColumnValue4 但我明白了: ColumnValue1 ColumnValue2 ColumnValue3 ColumnValue4 ColumnValue1 ColumnValue2 Col
ColumnValue1, ColumnValue2, ColumnValue3, ColumnValue4
ColumnValue1, ColumnValue2, ColumnValue3, ColumnValue4
但我明白了:
ColumnValue1
ColumnValue2
ColumnValue3
ColumnValue4
ColumnValue1
ColumnValue2
ColumnValue3
ColumnValue4
更新:输入的值是DateTime(11/17/2014 12:00:00:000)Int、Int和String
下面是我的代码示例:
private string GenerateCSV(string fileLocation)
{
string filePath = Path.Combine(fileLocation, "filename.csv");
var csvList = new List<String>();
StringBuilder sb = new StringBuilder();
if (File.Exists(filePath))
{
File.Delete(filePath);
}
try
{
using (FileStream stream = File.OpenWrite(filePath))
using (IDbCommand command = new SqlCommand("Example command") { CommandTimeout = 0 })
using (IDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
csvList.Add(Convert.ToString(reader[i]));
}
}
}
}
catch (Exception e)
{
m_Log.Error("{0}", e);
}
for (int index = 0; index < csvList.Count; index++)
{
sb.AppendLine(string.Join(",", csvList[index]));
}
File.AppendAllText(filePath, sb.ToString());
return filePath;
}
private string GenerateCSV(字符串文件位置)
{
字符串filePath=Path.Combine(fileLocation,“filename.csv”);
var csvList=新列表();
StringBuilder sb=新的StringBuilder();
if(File.Exists(filePath))
{
File.Delete(文件路径);
}
尝试
{
使用(FileStream-stream=File.OpenWrite(filePath))
使用(IDbCommand=newSQLCommand(“示例命令”){CommandTimeout=0})
使用(IDataReader=command.ExecuteReader())
{
while(reader.Read())
{
对于(int i=0;i
当您进入for(int index=0;index
循环时,csvList
包含reader
已通过的所有记录的字段值-作为单独的项。然后调用string.Join
,它需要一个字符串数组作为第二个参数,但它的内容是将csvList[index]
string与单个项合并成一个字符串数组。因此,这里没有什么可加入的“,”,而csvList[index]
只是AppendLine
ed到StringBuilder
while (reader.Read())
{
List<string> fields = new List<string>();
for (int i = 0; i < reader.FieldCount; i++)
{
fields.Add(Convert.ToString(reader[i]));
}
csvList.Add(string.Join(",", fields.ToArray());
}
for (int index = 0; index < csvList.Count; index++)
{
sb.AppendLine(csvList[index]);
}
while(reader.Read())
{
列表字段=新列表();
对于(int i=0;i
而不是
for (int index = 0; index < csvList.Count; index++)
{
sb.AppendLine(string.Join(",", csvList[index]));
}
我看不出为什么你发布的代码每行会输出一个以上的项目。如果你看不懂代码,请考虑仔细的调试。注意,你只应该使用现有的CSV读写器,而不是发明你自己的(除非是家庭作业)。
sb.AppendLine(string.Join(",", csvList));