c#在.csv文件中读取具有重复列名的数据表

本文关键字:数据表 csv 文件 读取 | 更新日期: 2023-09-27 18:02:05

我有一个。csv文件有重复的列名,即单词"Type"重复多次。

我有一个基本的。csv阅读器,读取到一个数组,然后分割','。然而,因为它然后被分配给一个数据表,我得到任何。csv文件的问题,我有重复的列名。

解决这个问题的最好方法是什么?
    public void parseCSV(string file)
    {
        string[] Lines = File.ReadAllLines(file);
        string[] Fields;
        Fields = Lines[0].Split(new char[] { ',' });
        int Cols = Fields.GetLength(0);
        DataTable dt = new DataTable();
        //1st row must be column names; force lower case to ensure matching later on.
        for (int i = 0; i < Cols; i++)
            dt.Columns.Add(Fields[i], typeof(string));
        DataRow Row;
        for (int i = 1; i < Lines.GetLength(0); i++)
        {
            Fields = Lines[i].Split(new char[] { ',' });
            Row = dt.NewRow();
            for (int f = 0; f < Cols; f++)
                Row[f] = Fields[f];
            dt.Rows.Add(Row);
            dataGridView.DataSource = dt;
        }
    }

编辑:测试。csv文件,我正在使用,抛出错误关于col2

col1,col2,col2,col3,col4,Time Modified
1,1,123456,1,1,15:30
2,2,654321,2,2,15:31

c#在.csv文件中读取具有重复列名的数据表

您可以添加像Type_1:

这样的后缀
for (int i = 0; i < Cols; i++)
{
    string columnName = Fields[i];
    int num = 0;
    while (dt.Columns.Contains(columnName))
        columnName = string.Format("{0}_{1}", Fields[i], ++num);
    dt.Columns.Add(columnName);
}