我有一个包含重复列名的 .csv 文件,即“类型”一词重复多次。
我有一个基本的 .csv 阅读器,它读入一个数组,然后按“,”拆分。但是,因为它随后被分配给 DataTable,所以我遇到任何具有重复列名的 .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
最佳答案
您可以添加一个后缀,例如 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);
}
关于c# 将 .csv 文件读入具有重复列名的 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519995/