Winforms:同时将字符串和列表<string>导出到CSV

时间:2019-02-06 15:20:32

标签: c# csv

基本上,我有一个class和一个form。在我的class中,我在下面编写了变量。这些变量是我将数据保存在form中的位置:

Save.cs

namespace CSV
{
  public partial class Save
  {
    public static string people = string.Empty;
    public static List<string> mileage_list = new List<string>();
  }
}

然后在我的form中,创建了一个事件,并通过FormClosed调用了该事件。 已编辑:每次单击按钮,textbox1都会清除,我可以添加新值。所有这些值都保存在列表中

Form1.cs

public void Savetocsv()
{
 Type s = typeof(Save);
 FieldInfo[] fields = s.GetFields(BindingFlags.Public | BindingFlags.Static);

 StringBuilder csvdata = new StringBuilder();

 string header = String.Join("|", fields.Select(f => f.Name).ToArray());
 csvdata.AppendLine(header);

 string first = Save.people;
 string newLine = string.Format("{0}", first);
 csvdata.AppendLine(newLine);

 string mileage = String.Join("|", Save.mileage_list.ToArray());
 csvdata.AppendLine(mileage);

 string filepath = @"C:\Vehicles.csv";
 File.WriteAllText(filepath, csvdata.ToString());
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
 Save.people = Combobox1.SelectedItem.ToString();
 Save.mileage_list.Add(Textbox1.Text);
 Savetocsv();
}


private void button1_Click(object sender, EventArgs e)
{
 Save.people = Combobox1.SelectedItem.ToString();
 Save.mileage_list.Add(Textbox1.Text);
 TBmileage.Text = "";
}

当我打开 Vehicles.csv 文件时,来自Save.people的字符串是正确的,但是来自Save.mileage_list的字符串被写为 System.Collections.Generic。 List1 [System.String] 。因此,我可能知道如何重写代码以正确导出两个字符串值。

已编辑 以前,这些值是错误的,但会在其各自的标题中导出。参见Image 1。但是,使用此代码,值是正确的,但未在其各自的标头中导出。 Image 2。我知道我可能需要做一个Dictionaryfor循环,但是我不知道该怎么做。

0 个答案:

没有答案