【问题标题】:Resolving column names while reading CSV file in Asp.Net在 Asp.Net 中读取 CSV 文件时解析列名
【发布时间】:2015-04-21 07:05:37
【问题描述】:

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

谢谢

【问题讨论】:

  • 但是您提供的代码与列名无关,无论列名是什么,它都应该返回一个DataTable。请提供与您的问题相关的代码。
  • 这是将数据提取到 DataTable 中的唯一代码,我不确定是什么更改了列名。
  • 列名的更改无关紧要。重要的是您如何在代码中处理它。您写道:it is coming as F1, F2,F3........ I have handled that。代码中的这个地方,你处理它的地方,这是回答你问题的相关代码。
  • 我已经在保存 csv 数据的数据库中创建了表。第一次运行应用程序并进行调试时,我得到了 F1、F2、F3.... 我以为它总是一样的,直到几个小时前。

标签: c# asp.net csv oledb oledbconnection


【解决方案1】:

由于列名可能会更改,您可以将它们重命名为始终为 F1、F2、... Fn。在返回数据表之前将这段代码添加到方法中:

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

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 2021-03-21
    • 2015-10-17
    • 2020-08-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多