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

时间:2015-04-21 07:05:37

标签: c# asp.net csv oledb oledbconnection

我正在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;
        }

由于

1 个答案:

答案 0 :(得分:0)

由于列名可能会发生变化,您可以将它们重命名为F1,F2,... Fn。在返回dataTable之前将此代码添加到方法中:

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