将CSV的内容插入字符串

时间:2017-04-10 18:34:36

标签: c# csv datagridview datagrid

我一直在努力处理一小段代码。我有一个CSV文件,其中一列包含一串数字。我可以毫无问题地导入该文件并显示它。

我的目标是获取每个表中的数字并将其放入单独的字符串中,通过函数运行该字符串,然后将结果放回到第二列的数据网格中。有没有办法,我应该使用下面的代码这样做;我认为应该做到这一点,我认为应该这样做。

编辑:我调整了代码,它现在按照我想要的方式工作,但我不能将结果插入除第一个列之外的任何列。有没有一种方法可以将结果定位到第二列?

            using (var fs = File.OpenRead(Dialog.FileName))
            using (var reader = new StreamReader(fs))
            {

                List<string> lista = new List<string>();
                List<string> listb = new List<string>();

                while (!reader.EndOfStream)
                {
                    var line = reader.ReadLine();
                    var values = line.Split(',');
                    lista.Add(values[0]);
                    dt1.Rows.Add(values[0]);
                }
                foreach (var item in lista)
                {
                    string temp;
                    GetLuhnCheckDigit(item);
                    listb.Add(last.ToString());
                    temp = item + last.ToString();

                    dt1.Rows.Add(temp); //This only adds to the first column
                }
                dataGridView1.DataSource = dt1;

1 个答案:

答案 0 :(得分:1)

在不知道GetLuhnCheckDigit方法的作用的情况下,无法确定第二列包含的值。查看已发布的代码,有很多内容缺失,例如数据表有多少列,Dialog变量定义在哪里?什么是last

假设DataTable dt1中至少有两列,我不知道您为什么要将这些项添加到第一列,然后循环遍历这些项的列表以设置第二列。看来同时添加两个列会更容易。

您可以在阅读文件时完成所有这些操作:

try {
  using (var fs = File.OpenRead(Dialog.FileName)) {
    using (var reader = new StreamReader(fs)) {

      List<string> lista = new List<string>();
      List<string> listb = new List<string>();
      string temp;

      while (!reader.EndOfStream) {
        var line = reader.ReadLine();
        var values = line.Split(',');
        lista.Add(values[0]);
        GetLuhnCheckDigit(values[0]); // <-- What is this method doing??? 
        listb.Add(last.ToString());
        temp = values[0] + last.ToString();
        dt1.Rows.Add(values[0], temp); // <-- this adds both columns
      }
      dataGridView1.DataSource = dt1;
    }
  }
}
catch (Exception e) {
  MessageBox.Show("Error: " + e.Message);
}

如果我遗失了某些内容,请告诉我,因为我对GetLuhnCheckDigit方法可能做的事情一无所知。