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

Resolving column names while reading CSV file in Asp.Net

我正在将 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。在返回数据表之前将此代码添加到方法中:

for (int i = 0; i < dtExcelData.Columns.Count; i++) 
{
    dtExcelData.Columns[i].ColumnName = "F" + i.ToString();
}