如何防止OleDbDataReader.ExecuteReader自动附加整数以复制列值

时间:2011-08-30 19:18:40

标签: c# .net oledb datareader

我正在尝试从Excel(xls)电子表格导入数据。如果标题行中出现重复值,我需要抛出一个错误。我正在使用OleDbDataReader来提取工作表数据。我遇到的问题是.Net在重复列的末尾附加一个唯一的整数,以便所有值都是唯一的。

标头值在运行时将是未知的。如果找到重复的标头值,则应停止处理该文件。

例如,包含以下标题的电子表格: 制作,模型,年份,制作 将显示为: Make,Model,Year,Make1

以下是一些代码:

           string selectString = "Select * from $Sheet1";
           xlConnection = new OleDbConnection(connectionString);
           OleDbCommand cmd = new OleDbCommand(selectString, xlConnection); 
           OleDbDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                for (int fieldIndex = 0; fieldIndex < reader.FieldCount; fieldIndex++)
                {
                    string columnValue = reader.GetName(fieldIndex);
                }
            }

GetName返回Make,Model,Year,Make1

有没有办法防止这种行为?

2 个答案:

答案 0 :(得分:2)

考虑使用:

  string selectString = "Select Make, Model, Year from $Sheet1";

而不是:

  string selectString = "Select * from $Sheet1";

答案 1 :(得分:0)

我有同样的要求并面临同样的挑战。

我通过修改连接字符串来设置HDR = NO来解决它。然后选择第一行并循环遍历每列中的值以检查唯一性。如果我找到匹配项,我会抛出DuplicatNameException以与DataTable保持一致。

希望这有帮助。