为什么某些行在 C# 中显示不同列的数据?

Why certain row shows different column's data in c#?

我想写 certain columninput fileoutput file。 我的代码如下所示:

try
        {
            using (StreamWriter file = new StreamWriter(@"outputfile.csv", true))
            {
                string[] lines;
                file.WriteLine("Date,Entity, ProdFamily, ProdGroup, ProdType1, ProdTypo, ProdType, Currency, InternalFlag, B/S");
                lines = System.IO.File.ReadAllLines(@"inputfile.csv";
                    foreach (string line in lines)
                    {
                        if (line != lines[0])
                        {   
                            string[] values = line.Split(',');
                            file.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}",
                                    values[43], values[0], values[11], values[12], values[13], values[15], values[14], values[28], values[22], values[9]);                  
                        }
                    }
            }
        }

我得到的 error 是一些 row 正在显示 other column's data。例如,第一行的第一列显示 N 而它应该显示 1-Jun-20.

这是上面示例中使用的输入文件的一部分。

我尝试通过更改缺陷行的列索引来进行硬编码,例如将 values[43] 更改为 values[43+2],但它只会创建另一个意外数据。请帮助我。

您的输入文件的某些单元格中包含逗号:

在 CSV 中,将表示为:

...,BL,"BR BSS PLC,WB,",NA,...

您的拆分代码平等对待这些逗号中的每一个,而不考虑它们是否被引用:

string[] values = line.Split(',');

您应该使用 CSV 解析库,而不是尝试自己解析它。