2014-03-06 126 views
0

第一次試圖建立在C#中的csv文件,這裏是代碼:創建一個CSV文件,而不是添加到下一列

string FilePath = @"C:\Users\me\Downloads\csvfiles\test-" + DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + ".csv"; 
string delimit = ","; 
List<string> cells = new List<string>(); 

Console.WriteLine("Gathering the data..."); 

SqlConnection con = new SqlConnection(Properties.Settings.Default.ConnectionString); 
con.Open(); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = con; 
cmd.CommandType = System.Data.CommandType.Text; 
cmd.CommandText = "SELECT id, name FROM contacts"; 

SqlDataReader reader = cmd.ExecuteReader(); 

Console.WriteLine("Building the csv file"); 

while (reader.Read()) 
{ 
    AddCell((IDataRecord)reader, cells); 
} 

StringBuilder sb = new StringBuilder(); 

for (int i = 0; i < cells.Count; i++) 
{ 
    sb.AppendLine(string.Join(delimit, cells[i])); 
} 

File.WriteAllText(FilePath, sb.ToString()); 

/*Method to add each record to the list*/ 
public static void AddCell(IDataRecord record, List<string> cells) 
{ 
    cells.Add(record[0].ToString()); 
    cells.Add(record[1].ToString()); 
} 

麻煩的是,它附加一切到一個新行,這不是將記錄[1]移到下一列並開始一個新行...

+0

請不要包含有關問題標題中使用的語言的信息,除非在沒有它的情況下沒有意義。標籤用於此目的。 –

+0

@OndrejJanacek對不起 – user2405469

+0

我加入了分隔符變量,這就是爲什麼它移動到下一行... – user2405469

回答

1

您的For循環對於您嘗試執行的操作不正確。

替換:

for (int i = 0; i < cells.Count; i++) 
    { 
     sb.AppendLine(string.Join(delimit, cells[i])); 
    } 

隨着

int i = 0; 
    while (i < cells.Count) 
    { 
     sb.AppendLine(string.Join(delimit, cells[i],cells[i+1])); 
     i = i + 2; 
    } 
+0

謝謝@cvraman這是一個不錯的解決方案 – user2405469

+0

@ user2405469:如果這解決了您的問題,請將其標記爲答案。 – cvraman

0
string FilePath = @"C:\Users\me\Downloads\csvfiles\test-" + DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + ".csv"; 
string delimit = ","; 
List<string> cells = new List<string>(); 

Console.WriteLine("Gathering the data..."); 

SqlConnection con = new SqlConnection(Properties.Settings.Default.ConnectionString); 
con.Open(); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = con; 
cmd.CommandType = System.Data.CommandType.Text; 
cmd.CommandText = "SELECT id, name FROM contacts"; 

SqlDataReader reader = cmd.ExecuteReader(); 

Console.WriteLine("Building the csv file"); 

while (reader.Read()) 
{ 
    AddCell((IDataRecord)reader, cells); 
} 

StringBuilder sb = new StringBuilder(); 

for (int i = 0; i < cells.Count; i++) 
{ 
    if (cells[i].Equals("\n")) 
    { 
     sb.Append(Environment.NewLine); 
    } 
    else 
    { 
     sb.Append(cells[i]); 
    } 
} 

File.WriteAllText(FilePath, sb.ToString()); 

/*Method to add each record to the list*/ 
public static void AddCell(IDataRecord record, List<string> cells) 
{ 
    cells.Add(record[0].ToString()); 
    cells.Add(","); 
    cells.Add(record[1].ToString()); 
    cells.Add("\n"); 
} 

不優雅的你@cvraman但它的工作太:)我將使用您的解決方案。

相關問題