C# 在Asp.Net中读取CSV文件时解析列名

C# 在Asp.Net中读取CSV文件时解析列名,c#,asp.net,csv,oledb,oledbconnection,C#,Asp.net,Csv,Oledb,Oledbconnection,我正在将CSV读入DataTable。无论何时csv中没有给出列名,它都是F1、F2、F3。。。。。。。。我已经处理好了,应用程序运行良好,直到客户给我另一个相同格式的csv,它失败了。我调试了客户端的csv应用程序,发现未命名的列组合为.NoName、.NoName1、.NoName2 如何使两个文件的列都是唯一的 我已经阅读了下面的文件 public static DataTable ImportCsvFile(string filename) { D

我正在将
CSV
读入
DataTable
。无论何时
csv
中没有给出列名,它都是F1、F2、F3。。。。。。。。我已经处理好了,应用程序运行良好,直到客户给我另一个相同格式的
csv
,它失败了。我调试了客户端的
csv
应用程序,发现未命名的列组合为.NoName、.NoName1、.NoName2

如何使两个文件的列都是唯一的

我已经阅读了下面的文件

public static DataTable ImportCsvFile(string filename)
        {
            DataTable dtExcelData = new DataTable();
            FileInfo file = new FileInfo(filename);
            using (OleDbConnection con =
                    new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" +
                    file.DirectoryName + "\";Extended Properties='text;HDR=Yes;FMT=Delimited(,)';"))            
            {
                using (OleDbCommand cmd = new OleDbCommand(string.Format
                                          ("SELECT * FROM [{0}]", file.Name), con))
                {
                    con.Open();
                    using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd))
                    {
                        adp.Fill(dtExcelData);
                    }
                }
            }
            return dtExcelData;
        }

谢谢

因为列名可能会更改,您可以将它们重命名为始终为F1、F2、。。。Fn。在返回dataTable之前将此代码添加到方法:

for (int i = 0; i < dtExcelData.Columns.Count; i++) 
{
    dtExcelData.Columns[i].ColumnName = "F" + i.ToString();
}
for(int i=0;i
但是您提供的代码与列名无关,无论列名是什么,它都应该返回一个DataTable。请提供与您的问题相关的代码。这是将数据提取到DataTable中的唯一代码,我不确定是什么更改了列名。更改列名的内容无关紧要。重要的是在代码中如何处理它。您写道:
它将以F1、F2、F3的形式出现。。。。。。。。我已经处理好了
。这是代码中的一个地方,在这里您可以处理这个问题,这是回答您问题的相关代码。我已经将表创建到数据库中,该数据库保存csv数据。第一次运行应用程序并调试时,我得到的是F1、F2、F3。。。。我以为一切都会一样,直到几个小时前。